如何使用regex python定位XX st/nd/rd/th

2024-09-28 15:27:07 发布

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

我试图在字符串中查找日期。不幸的是,我真的不该错过这样简单的事情。在

我的正则表达式是:

lookup = re.findall("[0123456789]+st|[0123456789]+nd|[0123456789]+rd|[0123456789]+th", userInput, re.IGNORECASE)
for group in lookup:
   print(group)

“第三、第五、第二十一”的输出理想情况下为第三、第五、第二十一组。但是,如果我不把[0123456789]放在每个st,nd,rd,th之前,它最终只会与像21这样的东西正确匹配(因为它认为[]只是第一个选项的一部分)

有没有更简单更好的方法来阐述这个问题?在


Tags: 字符串inreforgrouprdlookup事情
1条回答
网友
1楼 · 发布于 2024-09-28 15:27:07

您需要对后缀进行分组:

lookup = re.findall("[0-9]+(?:st|[nr]d|th)", userInput, flags=re.IGNORECASE)

参见regex demo

注意,如果您想用re.findall获得正确的输出,则需要使用非捕获组(?:...)。另外,以防万一,如果您只想匹配整个“单词”,请在模式周围添加\b单词边界,r"\b[0-9]+(?:st|[nr]d|th)\b"。在

请参见Python demo

^{pr2}$

相关问题 更多 >