Regex: строка между сочетанием постоянных и переменных символов - PullRequest
2 голосов
/ 18 мая 2019

У меня есть строка (полный текст). Он состоит из части, которая является именем встроенной функции, и из второй части, которая является описанием. Я хочу извлечь описание.

т.е. Я хочу извлечь часть текста, которая находится между \rPython *function_name*()\r и этим \r таким образом, результат будет «возвращает метод класса для данной функции»

Я пробовал это r'(?<=\\rPython .()\\r)(.*?)(?=\\r)', но он не показывает никакого результата, и я не знаю почему.

#find description
fulltext=r'\rPython classmethod()\rreturns class method for given function\r'
description_regex=re.compile( r'(?<=\\rPython .()\\r)(.*?)(?=\\r)')
description= description_regex.search(fulltext)
print(description.group())

1 Ответ

3 голосов
/ 18 мая 2019

Мы можем попробовать использовать re.findall здесь:

input = "\rPython classmethod()\rreturns class method for given function\r"
matches = re.findall(r'\rPython\s+[^()]+\(\)\r(.*)\r', input)
print(matches)

Это печатает:

['returns class method for given function']

Использование re.findall может иметь смысл, если у вас есть текст, который может иметь более одного возможного совпадения.

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