Python正则表达式 - 查找两个分隔符之间的所有子字符串

时间:2016-11-06 16:39:56

标签: python regex

我已经处理了这个问题超过一天了,我只是想不出来..

我遇到的问题如下: 鉴于文字:

  

Obratitepažnjunasljedece:
  垫prometa
  Rentabilnost imovine
  Netomaržu

     

******* **********************

我需要提取单词“sljedece:”(没有qouatiton标记)和星号行之间的所有文本。

我尝试使用以下代码:

import re

text =  """
Obratite pažnju na sljedece:
Pad prometa
Rentabilnost imovine
Neto maržu

**************************************************************
"""
pattern = r"sljecece:(.*?)\*+"
napomene = re.findall(pattern, text)

print(napomene)

但它打印出一个空列表。

提前向所有人致谢!

2 个答案:

答案 0 :(得分:4)

您必须通过re.DOTALL使.匹配换行符:

re.findall(pattern, text, re.DOTALL)

您的模式r"sljecece:(.*?)\*+"也应该是r"sljedece:(.*?)\*+"

答案 1 :(得分:0)

为了提高效率,您可以限制延迟量词占用整行的影响,直到星号行:

re.findall(r'\bsljedece:((?:.*\n)+?)\*+$', text, re.M)

在您的情况下,re.search方法可能更合适。