Повторное использование части пользовательской строки ввода, которая соответствует регулярному выражению - PullRequest
1 голос
/ 15 марта 2011

Я работаю над проектом Python с пользовательским вводом и хочу повторно использовать определенные части (т. Е. Те части, которые соответствуют регулярному выражению) в выводе, поэтому диалог может выглядеть примерно так:

Программа: Здравствуйте, чем вы занимались сегодня?Пользователь: Я занимался foobaring ./ Я пошел foobaring ./( что-нибудь еще, содержащее 'foobaring') [Где регулярное выражение '[a-zA-Z]*ing'] Программа: Вам нравится foobaring?

.. но также будет иметьодин и тот же результат, независимо от того, какое действие ввел пользователь, до тех пор, пока оно заканчивается 'ing'.

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

variable = re.compile('regexp')

и

userinput = raw_input()

, чтобы я мог использовать их в последующем if.

TL; DR: есть ли что-либо, что возвращает строку, являющуюся частью большей строки, которая соответствует обычнойвыражение

1 Ответ

2 голосов
/ 15 марта 2011

Если вы окружаете регулярное выражение круглыми скобками (чтобы сделать его группой), то вы можете получить доступ к этой группе, используя match.group(1):

In [89]: import re

In [90]: gerund=re.compile(r'(?u)\b([\w-]+ing)\b')

In [91]: sentence='I went foobaring'

In [92]: match=gerund.search(sentence)

In [93]: match.group(1)
Out[93]: 'foobaring'

Обратите внимание, что использование регулярных выражений для поиска герундов потенциально подвержено ошибкам:

In [103]: sentence='Ming Tsai and I went sight-seeing'

In [104]: match=gerund.search(sentence)

In [105]: match.group(1)
Out[105]: 'Ming'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...