Получение полных совпадений групп новой строки и табуляции с регулярным выражением в python - PullRequest
0 голосов
/ 19 марта 2019

Код должен извлекать группы \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 ожидаемые группы?

1 Ответ

1 голос
/ 19 марта 2019

Метод re.search вернет только первое совпадение, вам нужно использовать re.findall или re.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...