Skip to main content
 首页 » 编程设计

python之用于解析简单英语定义的正则表达式示例

2025年05月04日23mfrbuaa

我正在尝试为一个单词的定义编写一个小型解析器,并提供简单英语用法示例。

例如

  • 示例 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 )