Skip to main content
 首页 » 编程设计

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

2025年05月04日22lautakyan007

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

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,尽管在多行模式下用法可能有所不同,因为 ^ 也将在每个新行的开头匹配 [或者更确切地说,紧接在每个新行之后] 在那种模式下。)