代码应该提取\n\t
组。它总是以\n
开头,但是\t
可以是0或更多,中间有子字符串
def longestAbsolutePath(string):
...
paths[path] = r'dir\n\tsubdir1\n\t\tfile1'
special = re.search(r'(\\n(\\t)*)',paths[path])
print special
valid = True
if len(special.groups()) > 1:
# do something
...
return longest
在上面的测试字符串dir\n\tsubdir1\n\t\tfile1
中,我希望得到\n\t
和\n\t\t
作为回报。
我尝试了re.search
和re.findall
,但未能获得2个完全匹配,因为它返回None
,special
正在打印:AttributeError: 'NoneType' object has no attribute 'groups'
。
如何搜索有问题的字符串以获得2个预期组
re.search
方法将只返回第一个匹配,您需要使用re.findall
或re.finditer
。此外,最好使用非捕获组(?:...)
来编写模式,因为之后不使用该值,如果使用此方法,则会将re.findall
输出弄乱参见Python demo
相关问题 更多 >
编程相关推荐