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

标签 python regex

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

例如

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

相关文章:

python - 如何在 Python 中编辑文本文件?

Python 在另一个函数中使用函数的输出

C# 正则表达式可选匹配

c# - 如何将 JSON 属性值转换为键和值数组

使用 Kimonolabs 提供的软件进行正则表达式处理

python - 为什么 schema_translate_map 不更改架构?

python - 获取一个Python项目中所有未使用的变量

用于查找不同连续字符位置的 Java 正则表达式

ruby - 在文本文件中查找与正则表达式匹配的行

python - 用 Pandas 加载大 CSV 文件