关于:寻找中间有线条的重复图案

2024-04-18 22:07:14 发布

您现在位置:Python中文网/ 问答频道 /正文

输入如下

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“^(我的项目+)([\s\s]+)”
然后做多行
但这将捕获我的\u PROJ10之后的所有行 我确信在正则表达式中有办法做到这一点。
我正在尝试使用regex101.com,但还不走运


Tags: 项目commylinegroupresultregex办法
2条回答

你可以试试这个

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

Demo

您可以使用^{}

    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')]

相关问题 更多 >