这是一个使用python 3.4的小代码
import re
path_pattern=r'(([^\W]|[.~%$])+)'
re.search(path_pattern+'$','./').string
它将在执行时报告AttributeError: 'NoneType' object has no attribute 'string'
。
如果我删除了代码中的+'$'
,那就可以了,
import re
path_pattern=r'(([^\W]|[.~%$])+)'
re.search(path_pattern,'./').string
据我所知,$
用于匹配字符串的结尾,但为什么不在这里工作呢?
答案 0 :(得分:1)
如果您在https://regex101.com/探索正则表达式path_pattern
,则会发现它只与.
匹配,因此在您追加$
之后,它将一无所有,并且如果字符串中没有位置与模式匹配,re.search
将返回None
,这就是您收到错误的原因。
在这里查看:
>>> path_pattern=r'(([^\W]|[.~%$])+)'
>>> r = re.search(path_pattern + "$",'./')
>>> print(r)
None
答案 1 :(得分:0)
您的正则表达式与字符串中的/字符不匹配。匹配。
当你在你的正则表达式中使用$时,它根本不匹配。当你删除它时,它只匹配"。"。