回复:找到中间有线条的重复图案

时间:2018-04-22 02:04:32

标签: python regex

输入如下

MY_PROJ10  
1st line  
2nd line  

MY_PROJ11  
3rd line  
4th line  


----------

使用正则表达式我想捕获

result [0]  
Group 0 MY_PROJ10  
Group 1  
1st line  
2nd line

result [1]  
Group 0 MY_PROJ11  
Group 1  
3rd line  
4th line

我的第一个问题是 regex = r" ^(MY_PROJ。+)([\ s \ S] +)"
然后做多行
但是这会捕获 MY_PROJ10 之后的所有以下行 我确信在正则表达式中可以这样做。
我正在尝试使用regex101.com而不是运气

2 个答案:

答案 0 :(得分:0)

您可以使用(?m)^(MY_PROJ.*)([\s\S]*?)(?=[\n\r]MY_PROJ|\Z)

    In [2]: s = """
   ...: MY_PROJ10
   ...: 1st line
   ...: 2nd line
   ...:
   ...: MY_PROJ11
   ...: 3rd line
   ...: 4th line
   ...: """

In [3]: re.findall(r'(?m)^(MY_PROJ.*)([\s\S]*?)(?=[\n\r]MY_PROJ|\Z)', s)
Out[3]:
[('MY_PROJ10', '\n1st line  \n2nd line  \n'),
 ('MY_PROJ11', '\n3rd line  \n4th line\n')]

答案 1 :(得分:0)

你可以试试这个,

(?s)(MY_PROJ\d+)[\s]*((?:(?!MY_PROJ\d+).)+)

Demo