在python中使用regex获得换行符和制表符组的完全匹配

2024-06-28 14:46:39 发布

您现在位置:Python中文网/ 问答频道 /正文

代码应该提取\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.searchre.findall,但未能获得2个完全匹配,因为它返回Nonespecial正在打印:AttributeError: 'NoneType' object has no attribute 'groups'
如何搜索有问题的字符串以获得2个预期组


Tags: path字符串代码researchstringdefdir
1条回答
网友
1楼 · 发布于 2024-06-28 14:46:39

re.search方法将只返回第一个匹配,您需要使用re.findallre.finditer。此外,最好使用非捕获组(?:...)来编写模式,因为之后不使用该值,如果使用此方法,则会将re.findall输出弄乱

paths[path] = r'dir\n\tsubdir1\n\t\tfile1'
special = re.findall(r'\\n(?:\\t)*', paths[path])
if len(special) > 1:
    # do something

参见Python demo

相关问题 更多 >