重复使用匹配正则表达式的用户输入字符串的一部分
我正在做一个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'