为什么这个正则表达式与注释行的末尾不匹配?

时间:2013-09-06 21:30:31

标签: python regex

我正在使用Python的正则表达式来解析注释行的文件。评论如下:

.. The comment is here
Not comment
Nope
.. Yup
.. 
.. This and the above are both comments!

但是,我的正则表达式\.\.\s+.*?&与这些行不匹配。我觉得好像我在行尾和符号上做错了。

3 个答案:

答案 0 :(得分:4)

  • [.]不正确,它与文字句号相匹配。
  • 您也应该添加^,否则您的正则表达式也会匹配foobar.. blah
  • .*?$(我猜你有一个错字&应该是$)没有多大意义......

这应该做:

^\.\.\s+.*

答案 1 :(得分:3)

一些事情:

  • 行尾锚是美元符号,而不是符号。如果你逐行阅读这个文本,你真的不需要它。只需让你的比赛变得贪婪:.*
  • [.]是一个包含文字点的字符组。它与.不一样。

正确的正则表达式如下所示:\.{2}\s+(.*)

我会在没有正则表达式的情况下这样做:

for line in file:
    if line.startswith('..'):
        comment = line[2:].strip()

答案 2 :(得分:2)

行尾的字符为$,而不是&

这是一个简单的正则表达式来匹配这些行:r'\.\..*$'