Python 用于解析纯英语定义的正则表达式,并附有示例
我正试图为一个单词的定义编写一个小的解析器,并提供一个简单英语的用法示例 例如Python 用于解析纯英语定义的正则表达式,并附有示例,python,regex,Python,Regex,我正试图为一个单词的定义编写一个小的解析器,并提供一个简单英语的用法示例 例如 示例1-“Foo:bar的同伴,例如,我有一个名为FooBar的类” 示例2-“Foo:bar的同伴例如,我有一个名为FooBar的类” 我希望将上述两个示例分解为: [('Foo','bar的同伴','我有一个叫做FooBar'的类] 这是我目前掌握的代码 import re EXAMPLE_REGEX = re.compile("(.*):(.*)(e.?g.?|(for )?example)(.*)") p
- 示例1-“Foo:bar的同伴,例如,我有一个名为FooBar的类”
- 示例2-“Foo:bar的同伴例如,我有一个名为FooBar的类”
[('Foo','bar的同伴','我有一个叫做FooBar'的类]
这是我目前掌握的代码
import re
EXAMPLE_REGEX = re.compile("(.*):(.*)(e.?g.?|(for )?example)(.*)")
print EXAMPLE_REGEX.findall('Foo: The companion of bar e.g. I have class called FooBar')
输出:[('Foo','bar的同伴','e.g','I have class call FooBar')]
如何避免输出中额外的
,例如
和'
。有一个更优雅的解决方案,但您可以将可选元素转换为非捕获组(?:
):
键是
(?:例如?|(?:for)
使用(?:)
忽略捕获组:(?:例如)
这很有效!谢谢。您认为更优雅的解决方案是什么样的?
import re
EXAMPLE_REGEX = re.compile("(.*):(.*)(?:e.?g.?|(?:for )?example)(.*)")
print EXAMPLE_REGEX.findall('Foo: The companion of bar e.g. I have class called FooBar')