如果正则表达式中的`\ A`与`^`(插入符号)之间存在差异?

时间:2016-09-23 20:37:36

标签: python regex python-2.7

Python' s re module documentation说:

  

^ :( Caret。)匹配字符串的开头,并且在MULTILINE模式下也会在每个换行符后立即匹配。

     

\A:仅匹配字符串的开头。

使用它们有什么不同吗?

2 个答案:

答案 0 :(得分:4)

这两者都匹配:

re.search('^abc', 'abc')
re.search('\Aabc', 'abc')

这也匹配:

re.search('^abc', 'firstline\nabc', re.M)

这不是:

re.search('\Aabc', 'firstline\nabc', re.M)

答案 1 :(得分:2)

\A是明确的字符串开始锚点。 ^可以根据是否使用re.M修饰符来更改其行为。

何时使用\A以及何时使用^

如果要匹配字符串的开头 OR 一行,则只需匹配字符串的开头而不管任何修饰符,都使用^ ,使用\A。您可以重复使用同一个字符串模式,但使用不同的标志进行编译。

这也意味着如果您使用re.M标志,并且想要匹配字符串开头和行开始位置,则会将\A^混合在该模式中