0

大文字と小文字を区別しない場合に備えて、指定された単語全体に一致する次の式があります。引用符は単語の一部であるため、単語の前後に引用符があるかどうかを確認します。たとえば、「foo」という単語は「foo's」というテキストと一致してはなりません。

word = "foo"
pattern = re.compile(r'(?<![a-z\'])%s(?![a-z\'])' % word,flags=re.IGNORECASE)

例外は三重引用符です。単語が三重引用符の内側(隣)にある場合は、一致する必要があります。

pattern.search("'''foo bar baz'''")

今回は「foo」が見つかるはずですが、単語の前に引用符が付いているため、見つかりません。

4

3 に答える 3

0

正規表現を使用する(?:(?<=''')|(?<!'))\bfoo\b(?:(?=''')|(?!'))

pattern = re.compile(r'(?:(?<=\'\'\')|(?<!\'))\b%s\b(?:(?=\'\'\')|(?!\'))' % word,flags=re.IGNORECASE)
于 2012-07-04T14:35:34.100 に答える
0
((?<![a-z\'\"])|(?<=\'{3}))foo((?![a-z\'\"])|(?=\'{3}))
于 2012-07-04T14:34:44.150 に答える
0

先読みを使用しない場合:

>>> pat = r'([\'\"]{3}|\b)foo\1'
>>> m = re.search(pat, 'My """foo""" is rich')
>>> re.search(pat, 'My """foo""" is rich').groups()
('"""',)
>>> re.search(pat, "My '''foo''' is rich").groups()
("'''",)
>>> re.search(pat, 'My """foo"" is rich').groups()
('',)
>>> re.search(pat, 'My """foo\'\'\' is rich').groups()
('',)
于 2012-07-05T08:49:56.950 に答える