我有下面的表达式,它应该匹配整个给定的单词,因为不区分大小写的way.Quotes是单词的一部分,所以我检查单词的前后是否有引号。例如,单词"foo“不应该与文本"foo's”匹配。
word = "foo"
pattern = re.compile(r'(?<![a-z\'])%s(?![a-z\'])' % word,flags=re.IGNORECASE)例外情况是三重引号,如果单词在它应该匹配的三重引号内(旁边):
pattern.search("'''foo bar baz'''")这一次应该找到"foo“,但它没有,因为单词前面有一个引号。
发布于 2012-07-04 22:34:44
((?<![a-z\'\"])|(?<=\'{3}))foo((?![a-z\'\"])|(?=\'{3}))发布于 2012-07-04 22:35:34
使用正则表达式(?:(?<=''')|(?<!'))\bfoo\b(?:(?=''')|(?!'))
pattern = re.compile(r'(?:(?<=\'\'\')|(?<!\'))\b%s\b(?:(?=\'\'\')|(?!\'))' % word,flags=re.IGNORECASE)发布于 2012-07-05 16:49:57
不使用前视:
>>> 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()
('',)https://stackoverflow.com/questions/11330822
复制相似问题