python - 为什么 python 正则表达式中的 '\A' 在 [ ] 中不起作用?

标签 python regex

我试图获得一个正则表达式来匹配行首或特定单词之后的单词。我试过:

r"[\A|my_word](smth)"

但它失败了,因为在那种情况下它不匹配\A。这有什么问题吗?

原来\A在[]里面不起作用:

In [163]: type(re.search(r"\A123", "123"))
Out[163]: <type '_sre.SRE_Match'>

In [164]: type(re.search(r"[\A]123", "123"))
Out[164]: <type 'NoneType'>

但我不明白为什么。

我正在使用 Python 2.6.6

编辑: 经过一些评论后,我意识到我使用 [\A|my_word] 的示例是错误的。实际的表达式是 [\AV] 来匹配字符串的开头或 V。我遇到的主要问题是我很好奇为什么 [\A] 不匹配工作。

最佳答案

我对括号字符类中的反斜杠的理解似乎是错误的,但即便如此,[\A|my_word] 也是如此。相当于[A|my_word]并将尝试匹配 A 中的一个, | , m , y , _ , w , o , r , 或 d之前smth .

这是一个应该做你想做的正则表达式;不幸的是,由于 \A,lookbehind 不能在 Python 中使用。和 my_word具有不同的长度,但可以使用非捕获组代替:(?:\A|abc)(smth) .

(如果需要,您也可以使用 ^ 代替 \A,尽管在多行模式下用法可能有所不同,因为 ^ 也将在每个新行的开头匹配 [或者更确切地说,紧接在每个新行之后] 在那种模式下。)

关于python - 为什么 python 正则表达式中的 '\A' 在 [ ] 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18146454/

相关文章:

python - 在 imaplib 中覆盖 open()

python - ?= 和 ?P 组合在正则表达式中

python - 调用 Github.get_organization() 时出现 PyGithub BadCredentialsException

JavaScript;如何要求文件的特殊命名

php - preg_match() 期望参数是给定的长字符串

javascript - 正则表达式匹配后面没有重复多次的字符的字符

PHP 多字节安全 preg_replace 对比。字符串替换

python - 如何仅在gensim中访问主题词

python - 使用 pandas 的绘图方法在 1 行中绘制图表时出现问题

c# - C#中匹配字符串