我试图在字符串中查找日期。不幸的是,我真的不该错过这样简单的事情。在
我的正则表达式是:
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这样的东西正确匹配(因为它认为[]只是第一个选项的一部分)
有没有更简单更好的方法来阐述这个问题?在
您需要对后缀进行分组:
参见regex demo
注意,如果您想用
re.findall
获得正确的输出,则需要使用非捕获组(?:...)
。另外,以防万一,如果您只想匹配整个“单词”,请在模式周围添加\b
单词边界,r"\b[0-9]+(?:st|[nr]d|th)\b"
。在请参见Python demo:
^{pr2}$相关问题 更多 >
编程相关推荐