所以我有一个字符串s:
'MakeMoney EURUSD,M1 2021.08.06-2021.08.10'
还有一段代码:
import re
pat1 = re.compile(r'''
(?P<robot>[^\s]+)
\s
(?P<asset>[^","]+)
","
(?P<tf>[^\s]+)
\s
(?P<datefrom>[0-9]{4}[.][0-9]{2}[.][0-9]{2})
"-"
(?P<dateto>[0-9]{4}[.][0-9]{2}[.][0-9]{2})
''', re.VERBOSE)
m = pat1.search(s)
m.groupdict()
出现以下错误(忽略行号-不影响此操作的其他代码):
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/tmp/ipykernel_32277/1686568363.py in <module>
50
51 m = pat1.search(s)
---> 52 m.groupdict()
53
AttributeError: 'NoneType' object has no attribute 'groupdict'
我所追求的是:
{'robot': 'MakeMoney', 'asset': 'EURUSD', 'tf': 'M1', 'datefrom': '2021.08.06', 'dateto': '2021.08.10'}
我不明白为什么它不匹配。。。我搜索了regex101并尝试了pythex-buggy,但没有找到解决方案。我错过了什么?将\A和\Z添加到模式的开头和结尾并没有帮助
真正令人讨厌的是,我在其他地方使用了相同的方法,但没有问题,只是使用了不同的模式和字符串结构
您原来的正则表达式只有两个错误,即:
","
"-"
在原始字符串中,没有引号:
除非你是匹配的
那么它是适用的
所以你应该删除引号
它应该在以后工作
旁注:如果您担心转义正则表达式中使用的特殊字符,请注意使用反斜杠
\
,例如,如果您想匹配句点字符,则使用\.
而不是引号"."
或括号[.]
相关问题 更多 >
编程相关推荐