假设我想搜索出现在行首或后跟“a”的“b”。
为什么 re.match('[\^a]b','b')
不匹配而 re.match('^b','b')
是吗?
更新:我意识到我应该使用search
而不是match
。我希望它对诸如“b”、“cab”、“ab”、“bc”和“abd”之类的事物是积极的。
最佳答案
正则表达式 [\^a]b
将匹配 ab
或 ^b
,因此它不应匹配字符串 'b'
.
请注意,re.match()
仅匹配字符串的开头,就好像您在正则表达式的开头有一个字符串 anchor 的开头 (^
或 \A
启用多行选项)。
因此“要搜索出现在行首或后跟‘a’的‘b’”,您需要使用带有以下正则表达式的 re.search()
:
(^|a)b
请注意,我对此的解释与其他答案略有不同,我认为您的要求意味着您也想匹配 'bob'
中的 'b'作为 'taboo'
中的 ab
,所以行首要求仅适用于 b
且前面没有 a
.
这种在组中交替的方法为您提供了比 ^b|ab
更具可扩展性的解决方案,因此要在字符串的开头或前面匹配 b
a
、x
、2
或 5
您可以使用以下内容:
(^|[ax25])b
关于python - 正则表达式行以字符集开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199118/