重新使用与正则表达式匹配的用户输入字符串的一部分

时间:2011-03-15 18:49:35

标签: python regex string substring

我正在处理一个带有用户输入的Python项目,并希望在输出中重用特定部分(即匹配正则表达式的部分),因此对话框可能类似于:

计划:你好,你今天做了什么? 网友:我一直在嬉闹./我去了foobaring./(其他包含'foobaring'的东西)[正则表达式为'[a-zA-Z]*ing']的地方 节目:你喜欢笨蛋吗?

..但无论用户输入什么活动,也会有相同的结果,只要它以“ing”结束。

我目前使用变量作为正则表达式和用户输入,如下所示:

variable = re.compile('regexp')

userinput = raw_input()

所以我可以在以后使用它们。

TL; DR:是否有任何返回字符串的内容,该字符串是与正则表达式匹配的较大字符串的一部分

1 个答案:

答案 0 :(得分:2)

如果用括号括起正则表达式(使其成为一个组),则可以使用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'