首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式word boundaries+quotes

正则表达式word boundaries+quotes
EN

Stack Overflow用户
提问于 2012-07-04 22:14:57
回答 3查看 661关注 0票数 0

我有下面的表达式,它应该匹配整个给定的单词,因为不区分大小写的way.Quotes是单词的一部分,所以我检查单词的前后是否有引号。例如,单词"foo“不应该与文本"foo's”匹配。

代码语言:javascript
复制
word = "foo"
pattern = re.compile(r'(?<![a-z\'])%s(?![a-z\'])' % word,flags=re.IGNORECASE)

例外情况是三重引号,如果单词在它应该匹配的三重引号内(旁边):

代码语言:javascript
复制
pattern.search("'''foo bar baz'''")

这一次应该找到"foo“,但它没有,因为单词前面有一个引号。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-04 22:34:44

代码语言:javascript
复制
((?<![a-z\'\"])|(?<=\'{3}))foo((?![a-z\'\"])|(?=\'{3}))
票数 0
EN

Stack Overflow用户

发布于 2012-07-04 22:35:34

使用正则表达式(?:(?<=''')|(?<!'))\bfoo\b(?:(?=''')|(?!'))

代码语言:javascript
复制
pattern = re.compile(r'(?:(?<=\'\'\')|(?<!\'))\b%s\b(?:(?=\'\'\')|(?!\'))' % word,flags=re.IGNORECASE)
票数 0
EN

Stack Overflow用户

发布于 2012-07-05 16:49:57

不使用前视:

代码语言:javascript
复制
>>> 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()
('',)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11330822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档