python – 在开始时具有正向lookbehind的正则表达式无法匹配整个字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在开始时具有正向lookbehind的正则表达式无法匹配整个字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含975字,纯文字阅读大概需要2分钟。
内容图文
![python – 在开始时具有正向lookbehind的正则表达式无法匹配整个字符串](/upload/InfoBanner/zyjiaocheng/786/bd95beea054b40d193e70a8410588f28.jpg)
我正在使用带有re模块的Python并尝试匹配十进制(4,1)和十进制(10,5)等字符串,而实际上只返回4,1和10,5,使用以下正则表达式:
(?<=decimal\()\d+,\d+(?=\)$)
假设我用re.compile编译正则表达式并将其命名为DECIMAL.如果我尝试搜索十进制(4,1)的正则表达式的实例,如下所示:
DECIMAL = re.compile(r'(?<=decimal\()\d+,\d+(?=\)$)')
results = DECIMAL.search('decimal(4,1)')
results.group(0)根据需要返回字符串4,1.但是,如果我尝试匹配而不是搜索:
results = DECIMAL.match('decimal(4,1)')
结果评估为无.
匹配方法是否在这里失败,因为匹配看起来完全匹配正则表达式的消耗部分与干草堆的开头,因此没有任何空间用于前面的正长度模式来确认?
至于直接实用,在这种情况下简单搜索将不起作用,因为DECIMAL会将结果变成不可接受的字符串,如snarfdecimal(4,1??).我应该在某处开始使用字符串开头的标记,还是还有其他我完全遗漏的东西?
解决方法:
你根本不需要使用正面的后视镜,
>>> import re
>>> find_decimal = re.compile(r'decimal\((\d+,\d+)\)')
>>> find_decimal.match('decimal(4,1)').group(1)
'4,1'
至于它不起作用的原因,不确定,但我猜你的想法是正确的.
内容总结
以上是互联网集市为您收集整理的python – 在开始时具有正向lookbehind的正则表达式无法匹配整个字符串全部内容,希望文章能够帮你解决python – 在开始时具有正向lookbehind的正则表达式无法匹配整个字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。