python-3.x - 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()
功能。
非常感谢您的任何建议。
解决方案
不,这不是正则表达式引擎可以提供的。相反,使用二分法:将您的正则表达式分成两半,测试前半部分,然后测试第二部分。如果一个有效而另一个无效,那么您现在知道问题出在哪一半了。专注于没用的一半,把它分成两半,继续。
https://regex101.com或https://www.debuggex.com/等在线正则表达式测试人员可以通过可视化正则表达式的哪些部分与测试输入中的文本匹配来提供帮助。
请注意,这并不意味着您需要将字符串精确地从中间拆分,只需找到可以逻辑拆分模式的点即可。如果您需要锚定到测试输入的特定区域,则可以对另一半使用硬编码文字。等等。
这就是很多调试代码的工作原理。您找出问题发生在哪个一般区域,然后隔离该区域并进一步放大。
推荐阅读
- python - 在 DSX/Watson Studio 中安排笔记本以特定时间间隔运行
- javascript - 如何在不使用控制器脚本中的模型名称分配的情况下将服务器端值分配给 Angular js 1.x 中的 ng-model 输入字段
- database - 自动递增序列不按顺序排列 - 较新的值有时会小于前一个?
- android - React Native - 如何在没有开发服务器的情况下运行应用程序
- java - AutoConfigureMybatis注解是什么意思?
- node.js - 角cli安装
- javascript - 正则表达式匹配表达式适用于 php 但不适用于 javascript
- python - Django 教程错误第 3 部分
- java - HQL 不会删除子(一对多)记录,但 ORM 删除会
- event-sourcing - 用于注册、登录、退出的事件采购