为了账号安全,请及时绑定邮箱和手机立即绑定

Python 正则表达式:OR 语句在正则表达式模块中不起作用

Python 正则表达式:OR 语句在正则表达式模块中不起作用

POPMUISE 2021-09-14 15:46:30
我想应用以下表达式来检查替换、插入、删除计数。但是 OR 语句似乎不起作用。正则表达式只检查括号中的第一条语句。例如:correct_string = "20181201"regex_pattern = r"((20[0-9]{2})(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])){e}"regex.fullmatch(regex_pattern, correct_string)输出:<regex.Match object; span=(0, 8), match='20181201', fuzzy_counts=(1, 0, 0)>它说由于第 5 位数字而有一个替换,但是如果在 OR 语句中它存在另一个例子:correct_string = "20180201"regex_pattern = r"((20[0-9]{2})(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])){e}"regex.fullmatch(regex_pattern, correct_string)输出:<regex.Match object; span=(0, 8), match='20180201'>在这种情况下,它表示没有根据 OR 中的第一条语句正确的替换。我该如何解决这个问题。谢谢你。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

您需要使用regex.ENHANCEMATCH

默认情况下,模糊匹配搜索满足给定约束的第一个匹配项。该ENHANCEMATCH标志将使其尝试改进它找到的匹配的拟合(即减少错误数量)。

Python 演示:

import regex

correct_string = "20181201"

regex_pattern = r"((20[0-9]{2})(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])){e}"

print(regex.fullmatch(regex_pattern, correct_string, regex.ENHANCEMATCH))

// => <regex.Match object; span=(0, 8), match='20181201'>

请参阅在线 Python 演示


查看完整回答
反对 回复 2021-09-14
  • 1 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信