首页 > 解决方案 > python3:来自正则表达式匹配失败的详细错误信息?

问题描述

我正在使用re.match非常复杂的正则表达式 in python3,并且匹配失败:

very_complex_regex = re.compile( ... )  # "..." stands for the complex regex
matched = very_complex_regex.match(text)
if not matched:
  # handle error

鉴于正则表达式有多复杂,我想获得有关匹配的哪一部分可能失败的详细信息,这样我就可以纠正正则表达式中存在的任何问题。但是,我得到的matched只是设置为None.

有没有办法从失败的 python 正则表达式匹配中获取详细的错误信息?

事实上,我必须检查正则表达式和它试图匹配的文本并逐段进行更改,以便尝试用正则表达式隔离问题。我知道如何做到这一点,但这是一个耗时的过程,我希望可能有一种更快的方法来显示模式匹配在哪一点失败......也许通过打印详细跟踪re.match()功能。

非常感谢您的任何建议。

标签: python-3.xregex

解决方案


不,这不是正则表达式引擎可以提供的。相反,使用二分法:将您的正则表达式分成两半,测试前半部分,然后测试第二部分。如果一个有效而另一个无效,那么您现在知道问题出在哪一半了。专注于没用的一半,把它分成两半,继续。

https://regex101.comhttps://www.debuggex.com/等在线正则表达式测试人员可以通过可视化正则表达式的哪些部分与测试输入中的文本匹配来提供帮助。

请注意,这并不意味着您需要将字符串精确地从中间拆分,只需找到可以逻辑拆分模式的点即可。如果您需要锚定到测试输入的特定区域,则可以对另一半使用硬编码文字。等等。

这就是很多调试代码的工作原理。您找出问题发生在哪个一般区域,然后隔离该区域并进一步放大。


推荐阅读