Python正则表达式,包含空白行

时间:2015-09-17 19:59:15

标签: python regex

我正在寻找一种正则表达式,它可以让我在第一个空白行的文本中获取所有内容。我有以下内容:

reg = r'((Opposition|Oppose):?\s*)(.*?)\n\n'
str1 = """Opposition


          California Attorneys for Criminal Justice
          Californians for Safety and Justice
          Drug Policy Alliance
          Friends Committee on Legislation of California
          Legal Services for Prisoners with Children


           Analysis Prepared  
"""

str2 = """Oppose:   None received

                                      -- END --

                                      """

当我跑步时:

match  = re.search(reg, str1, re.DOTALL)
print ma
tch.group(3)

我明白了:

      California Attorneys for Criminal Justice
      Californians for Safety and Justice
      Drug Policy Alliance
      Friends Committee on Legislation of California
      Legal Services for Prisoners with Children

但是当我跑步时:

match = re.search(reg, str2, re.DOTALL)
print match.group(3)

我明白了:

   None received
                                      -- END --

第一个字符串的结果是正确的,但我想要的第二个字符串只是"没有收到"。我无法得到一个很好的解释,为什么我得到" - 结束 - "同样。我的正则表达式不应该与\ n之后的\ n匹配;没有收到"以及空白行上的\ n并停止?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您可以确保只匹配仅空白行[^\S\n]*(= 匹配除非空格或换行符之外的0个或更多字符):

((Oppos(?:e|ition)):?\s*)(.*?)\n[^\S\n]*\n[^\S\n]*

请参阅demo

我也缩短了第二个捕获组。

这是IDEONE demo