正则表达式:按特定格式/单词对重复部分进行分组

2024-05-12 20:03:29 发布

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

我试图捕获一个多行字符串,该字符串以特定单词Case开始,以格式为dd.mm.yyyydd.m.dddd的日期结束

这里是示例文本:

案例X.1我知道我是一个幸运的孩子 asddasd(ii)sa asdas asd aklk铁路、飞机 asd-(一二三四)。 截止日期。。。。。。。。。29.8.1818

案例X.1我知道我是一个幸运的孩子 asddasd(ii)sa asdas asd aklk铁路、飞机 asd-(一二三四)。 截止日期。。。。。。。。。29.8.1818

案例X.1我知道我是一个幸运的孩子 asddasd(ii)sa asdas asd aklk铁路、飞机 asd-(一二三四)。 截止日期。。。。。。。。。29.8.1818

案例X.1我知道我是一个幸运的孩子 asddasd(ii)sa asdas asd aklk铁路、飞机 asd-(一二三四)。 截止日期。。。。。。。。。29.8.1818

我正在尝试这个:

标志:g m i

^case[^]*\d{1,2}\.\d{1,2}\.\d{2,4}
^case[\s\S]*\d{1,2}\.\d{1,2}\.\d{2,4}
((^case)[\s\S]+(\d{1,2}\.\d{1,2}\.\d{2,4}))

注意:设置了不区分大小写的标志

我希望得到每个段落的组(case - date)

这些表达式只捕获第一个案例到最后一个日期

案例No.X.1我知道我是一个幸运的男孩(1)sda asddasd(2)sa asd asd aklk铁路,飞机asd-(一二三四)。截止日期:1818年8月29日

案例X.1我知道我是一个幸运的男孩(1)sda asddasd(2)sa asdas asd aklk铁路,飞机asd-(一二三四)。截止日期:1818年8月29日

案例X.1我知道我是一个幸运的男孩(1)sda asddasd(2)sa asdas asd aklk铁路,飞机asd-(一二三四)。截止日期:1818年8月29日

案例X.1我知道我是一个幸运的男孩(1)sda asddasd(2)sa asdas asd aklk铁路,飞机asd-(一二三四)。截止日期………1818年8月29日

目前,我正在调查newline和lookarounds

请告知


Tags: 字符串sa孩子dd案例iicase铁路
1条回答
网友
1楼 · 发布于 2024-05-12 20:03:29

使用flags=re.DOTALL|re.Mregex101):

data = '''Case No.X.1 I know I am a lucky boy (1) a sda asddasd (ii)
sa asdas asd aklk Railway, Airplane asd - (one two three four). Closing date ......... 29.8.1818

Case No.X.2 I know I am a lucky boy (1) a sda asddasd (ii)
sa asdas asd aklk Railway, Airplane asd - (one two three four). Closing date ......... 29.8.1818

Case No.X.3 I know I am a lucky boy (1) a sda asddasd (ii)
sa asdas asd aklk Railway, Airplane asd - (one two three four). Closing date ......... 29.8.1818

Case No.X.4 I know I am a lucky boy (1) a sda asddasd (ii)
sa asdas asd aklk Railway, Airplane asd - (one two three four). Closing date ......... 29.8.1818'''

import re

for m in re.findall(r'^Case.*?\d{1,2}\.\d{1,2}\.\d{2,4}$', data, flags=re.DOTALL|re.M):
    print(m)
    print('-' * 160)

印刷品:

Case No.X.1 I know I am a lucky boy (1) a sda asddasd (ii)
sa asdas asd aklk Railway, Airplane asd - (one two three four). Closing date ......... 29.8.1818
                                                                                
Case No.X.2 I know I am a lucky boy (1) a sda asddasd (ii)
sa asdas asd aklk Railway, Airplane asd - (one two three four). Closing date ......... 29.8.1818
                                                                                
Case No.X.3 I know I am a lucky boy (1) a sda asddasd (ii)
sa asdas asd aklk Railway, Airplane asd - (one two three four). Closing date ......... 29.8.1818
                                                                                
Case No.X.4 I know I am a lucky boy (1) a sda asddasd (ii)
sa asdas asd aklk Railway, Airplane asd - (one two three four). Closing date ......... 29.8.1818
                                                                                

相关问题 更多 >