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

1 投票
1 回答
533 浏览
提问于 2025-04-16 13:45

我正在做一个Python项目,里面有用户输入的内容。我想把一些特定的部分(也就是那些符合正则表达式的部分)再用到输出里。比如对话可以是这样的:

程序:你好,今天你在做什么?
用户:我在foobaring。/我去foobaring了。/(任何其他包含'foobaring'的内容)[这里的正则表达式是'[a-zA-Z]*ing']
程序:你喜欢foobaring吗?

..不过无论用户输入什么活动,只要以'ing'结尾,结果都是一样的。

我现在用变量来存储正则表达式和用户输入,像这样:

variable = re.compile('regexp')

还有

userinput = raw_input()

这样我就可以在后面的代码中用它们做判断。

总结一下:有没有什么方法可以返回一个字符串,这个字符串是一个更大字符串中符合正则表达式的部分?

1 个回答

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'

撰写回答