patternMatch(pattern_string, input_string, ignore_case = False,
path_match = False)
→ int
この関数は大文字小文字を区別します。大文字小文字を区別せずにパターンマッチングをするにはignore_case
をTrueに設定します。
この関数は、パス区切り文字を特別に扱いません。
パスを意識したマッチングをするには、path_match
をTrueに設定します。
複数のパスコンポーネントを認識させるには、マルチレベルのワイルドカード()が必要です。
パターン文字列内のパターンが入力の文字列に一致すると1を返し、一致しなければ0を返します。
マッチングさせるには、パターンが入力の文字列の最初から最後まで一致しなければなりません。 サブ文字列に一致させるにはワイルドカード(*)を使用します。例えば
>>> hou.patternMatch("bar", "foobarbaz") 0 >>> hou.patternMatch("*bar*", "foobarbaz") 1
パターンとは、1個以上のパターンをスペースで区切ったリストのことです。 これは、この関数を直感的に理解できないような挙動を招きかねないです。例:
>>> hou.patternMatch("foo bar", "foo bar") 0
これは0を返します。なぜなら1番目の引数がfooとbarの2つのパターンを構成していて、それらのパターンのどれもfoo barに一致しないからです(パターンは最初から最後まで一致しなければなりません)。
同様に
>>> hou.patternMatch("foo bar", "foo") 1
これは1を返します。なぜなら、パターン内の2つの引数(fooとbar)のうち1番目の引数が文字列に一致しているからです。
>>> hou.patternMatch("/foo/*", "/foo/bar/blah", path_match = True) 0
これは0を返します。なぜなら、ワイルドカードは1番目のパスコンポーネント(/bar)のみに一致し、最後のパスコンポーネント(/blah)には不一致だからです。
>>> hou.patternMatch("/foo/**", "/foo/bar/blah", path_match = True) 1
これは1を返します。なぜなら、マルチレベルのワイルドカードは、複数のパスコンポーネントに一致するからです。