どのように単語境界を正しく尊重するか?たとえば、... 'とではないが、部分一致を行い bのpythonのreと完全な単語の一致
negative look-ahead assertionを使用して>>> import re
>>> str = "This is a test's test"
>>> p1 = r'\b' + 'test' + r'\b'
>>> re.findall(p1,str)
['test', 'test']
どのように単語境界を正しく尊重するか?たとえば、... 'とではないが、部分一致を行い bのpythonのreと完全な単語の一致
negative look-ahead assertionを使用して>>> import re
>>> str = "This is a test's test"
>>> p1 = r'\b' + 'test' + r'\b'
>>> re.findall(p1,str)
['test', 'test']
を理解し、あなたは'
が続かないtest
のマッチングを保証することができます。
>>> import re
>>> s = "This is a test's test"
>>> re.findall(r"\btest\b(?!')", s) # match `test` as long as it is not followed by "'"
['test']
ところで、str
を変数名として使用しないでください。それは組み込み関数/タイプstr
を陰にします。
あなたは何を意味するかを明確にする必要があります。 [ドキュメント](https://docs.python.org/2/library/re.html)で述べたように、「単語は英数字またはアンダースコア文字のシーケンスとして定義されているため、単語の末尾は空白文字または非英数字、アンダースコア以外の文字を含むことがあります。単語を他の方法で定義する場合は、\ bを使用して単語を定義することはできません。 – BrenBarn
regexesのための '単語'文字は、ASCII文字、数字またはアンダースコアです: 'A-Za-z0-9_'。正規表現の "単語境界"は、英語の単語ではなく、 "単語の文字"と非 "単語の文字"の境界です。 – krock