这个regex可以在pythox中工作,但在python3.6中不行。我不知道为什么:
python代码:
import re
test = '105297 003 002394 o 0000 20891 0.00 1'
pattern = r"(?P<pun1>\d{3})\s+(?P<pun2>\d{6})(\s+(?P<pun3>[01oO])(\s+(?P<pun4>\d{4}))?)?\s.*\s(?P<amt>\d+\.\d\d)\s"
match = re.match(pattern, test, re.IGNORECASE)
match is None
True
我还不明白为什么它在pythox中有效,但在python解释器中却不行。在
我怀疑您的问题来自于调用
re.match
而不是{a1}。re.search
函数试图在给定字符串中查找正则表达式,而re.match
则要求正则表达式在字符串的开头匹配。在更改此项:
为此:
^{pr2}$您可能在找
re.search()
而不是re.match()
。后者只在字符串的开头匹配(意味着有一个锚^
,即:见a demo on regex101.com。在
问题是match()用于匹配字符串的开头,而不是任何地方。 来自python文档:(Python docs for match())
如果字符串的开头的有零个或多个字符与此正则表达式匹配,则返回相应的匹配对象
您应该改用search(): 如果要在字符串中的任何位置找到匹配项,请改用search()
see also search() vs. match()
本部分:
必须是:
^{pr2}$相关问题 更多 >
编程相关推荐