Регулярное выражение Python - ограниченное слово - PullRequest
0 голосов
/ 18 марта 2019

Я пытался использовать регулярное выражение для определения слова между двумя символами, и я просто не могу добиться успеха.Это мой код:

re.match(r"\s*\#?\w*(\<)+\s*(?P<method>\w+)\s*(\>)+\w*", "# This <foo> truc")

В предложении есть (или нет) комментарий Python (#) и должен отображаться групповой метод.

Спасибо за ваше время и помощь

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Вам не хватает некоторых пробелов.После символа #, до < и после >.

Таким образом, одним из вариантов является добавление пропущенных совпадений с пробелами:

>>> m = re.match(r"\s*\#?\s*\w*\s*(\<)+\s*(?P<method>\w+)\s*(\>)+\s*\w*", "# This <foo> truc")
>>> m.group('method')
'foo'

Однако, если вам нужно только значение между < и >, используйте вместо этого re.search иВы можете просто значительно улучшить свое регулярное выражение:

>>> r = re.search(r"\<(?P<method>[^\>]*)\>", "# This <foo> truc")
>>> r.group('method')
'foo'
0 голосов
/ 18 марта 2019

Вам нужно изменить свое регулярное выражение, чтобы включить дополнительные пробелы перед This и <, тогда вы можете использовать атрибут groups:

some_match = re.match(r"\s*\#?\s*\w*\s*(\<)+\s*(?P<method>\w+)\s*(\>)+\w*", "# This <foo> truc")

some_match.groups()
('<', 'foo', '>')

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