使用start和1个或多个endlines匹配多行的python正则表达式

时间:2015-12-20 12:16:58

标签: regex python-2.7

如何匹配起始行与一个或多个结束行之间的所有行

让我们说我的字符串是:

My_string="""helloWorld
             .
             [wanted lines]
             .
             code/count: 1/11 22/22 33/33
             code/count: 4/44 55/55 6/666
              """

在上面的示例中,起始行是" helloWorld'结束行是" \ s +代码/计数:[\ d + / \ d + \ w +] +" ,

现在的问题是: 1)如果我这样做:

re.search(r'helloWorld(.+?)\r?\n\s+Code/Count: [\d+/\d+ \w+]+\r?\n' ,My_string,re.DOTALL)

match.group将是:

helloWorld
.
[wanted lines]
.
code/count: 1/11 22/22 33/33

2)如果我这样做:

re.search(r'helloworld(.+?)\r?\n\s+Code/Count: [\d+/\d+ \w+]+\r?\n\s+Code/Count: [\d+/\d+ \w+]+' ,My_string,re.DOTALL)

match.group将有两个结束(这就是我想要的)(代码/计数:1/11 22/22 33/33&& code / count:4/44 55/55 6/666)但是如果My_string只有一个"代码/计数:1/11 22/22 33/3"没有match.group,我不知道我在My_string中有多少(代码/数量:1/11 22/22 33/21),

任何方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

要完成所有" endlines"的匹配,只需使用量词+将括号模式指定为括号中的可重复组:

re.search(r'helloworld(.+?)(\s+Code/Count:[/ \w]+)+', My_string, re.DOTALL|re.I).group()