python - 正则表达式行以字符集开头

标签 python regex

假设我想搜索出现在行首或后跟“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 ax25 您可以使用以下内容:

(^|[ax25])b

关于python - 正则表达式行以字符集开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199118/

相关文章:

python - 登录类(class) - Python

regex - Oracle 正则表达式寻找空格或字符串结尾

jquery - 不允许使用正则表达式为零

.net - 如何使用 C# 正则表达式匹配任意字符串中的最后一个字符?

python - 无法在 Amazon Linux : invalid syntax 上安装 gcloud

python - 如何禁用嘈杂的调试?

python - 如何在不锁定 Vim 的情况下运行当前的 python 脚本?

python - 如何将 jinja 循环中的单个 jinja 变量作为参数传递给 python 函数?

python - 正则表达式 unicode 字符

regex - Google Analytics-排除除一个以外的所有参数