如何使用正则表达式

2024-09-25 16:32:02 发布

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

pattern = r"(Mon|Tues|Wednes|Thurs|Fri)day, (February|March) [0-9]{2}, [0-9]{4}\s*Day [0-9]{1}"

line = """
Wednesday, February 28, 2018 
Day 4 3:00 Dismissal 
All Day 

Thursday, March 01, 2018 
Day 5 1:30PM Dismissal 
All Day 

Friday, March 02, 2018 
Day 6 3:00 Dismissal 
All Day 

Monday, March 05, 2018 
Day 1 1:30 Dismissal 
All Day 

Tuesday, March 06, 2018 
Day 2 3:00 Dismissal 
All Day 
Tuesday, March 06, 2018"""

result = re.findall(pattern, line)
print(result)

不起作用。你知道吗


Tags: lineresultallpatternmarchdaymonfri
1条回答
网友
1楼 · 发布于 2024-09-25 16:32:02

如果只想捕捉关键点,请将其分组:

pattern = r"((?:Mon|Tues|Wednes|Thurs|Fri)day), (February|March) ([0-9]{2}), ([0-9]{4})\s*Day ([0-9]{1})"

将获得:

[('Wednesday', 'February', '28', '2018', '4'), ('Thursday', 'March', '01', '2018', '5'), ('Friday', 'March', '02', '2018', '6'), ('Monday', 'March', '05', '2018', '1'), ('Tuesday', 'March', '06', '2018', '2')] 

如果你想捕获整个匹配字符串,不要将其分组(比如@ekhumro说在分组前使用?:):

pattern = r"(?:Mon|Tues|Wednes|Thurs|Fri)day, (?:February|March) [0-9]{2}, [0-9]{4}\s*Day [0-9]{1}"

将获得str的列表:

['Wednesday, February 28, 2018 \nDay 4', 'Thursday, March 01, 2018 \nDay 5', 'Friday, March 02, 2018 \nDay 6', 'Monday, March 05, 2018 \nDay 1', 'Tuesday, March 06, 2018 \nDay 2']

相关问题 更多 >