我正在尝试为一个单词的定义编写一个小型解析器,并提供简单英语用法示例。
例如
- 示例 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', 'the companion of bar', 'e.g.', '', '我有一个名为 FooBar 的类')]
如何避免输出中出现额外的 'e.g.'
和 ''
?
最佳答案
有一个更优雅的解决方案,但您可以将可选元素转换为非捕获组 (?:
):
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')
关键是 (?:e.?g.?|(?:for )
关于python - 用于解析简单英语定义的正则表达式示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309409/