Python正则表达式换行符匹配

时间:2017-08-23 14:33:02

标签: python regex

我想匹配一个包含字母数字和一些特殊字符但不是换行符的字符串。但是,每当我的字符串有换行符时,它也会匹配换行符。我检查了一些标志的文件,但没有一个看起来相关。

以下是Python 3.6.2 REPL

中的示例代码
>>> import re
>>> s = "do_not_match\n"
>>> p = re.compile(r"^[a-zA-Z\+\-\/\*\%\_\>\<=]*$")
>>> p.match(s)
<_sre.SRE_Match object; span=(0, 12), match='do_not_match'>

预期的结果是它不应该匹配,因为我最后有换行符。

https://regex101.com/r/qyRw5s/1

我对这里缺少的东西感到有点困惑。

1 个答案:

答案 0 :(得分:3)

问题是$在换行符之前的字符串的末尾匹配(如果有的话)。

如果您不想在最后匹配换行符,请在正则表达式中使用\Z代替$

请参阅re模块的文档:

  

'$'
      匹配字符串的结尾或在字符串末尾的换行符之前

     


      仅匹配字符串末尾的匹配。