【问题标题】:How can I select a string with the following pattern using RegEx with Python?如何使用 RegEx 和 Python 选择具有以下模式的字符串?
【发布时间】:2019-07-24 09:59:25
【问题描述】:

我正在寻找我的文本数据中的特定结构。其中之一是产生了许多问题。看下面的玩具句:

“通过阅读 a) 和 b) 点可以看出,有人甚至可以使用 lect。A)、B) 和 Z)。”

我的目标是使用正则表达式,它可以找到表示项目列表的结构,其中项目使用 ALPHA+PARENTHESES 表示。

即使它可能不是最好的解决方案,我认为一种方法可以定义以下模式:

WORD + ALPHA) + xx + ALPHA) 其中“xx”表示 ALPHA) 和 ALPHA) 之间的所有字符序列(包括符号和空格),其中不包含超过 3 个字母字符的序列。 我如何使用正则表达式来做到这一点? 任何人有一些想法来处理这样的问题?

在显示的示例中,我想得到:

  • “点 a) 和 b)”
  • "lect. A)、B) 和 Z)"

我不得不说我不太擅长使用 RegEx。

我希望我把问题说清楚了。 提前感谢任何可以提供帮助的人!

【问题讨论】:

  • 向我们展示您实现相同目标的尝试。

标签: python regex pattern-matching


【解决方案1】:

如果不查看您所尝试的示例与您期望的输出进行比较,就很难确切地知道您在寻找什么。

也就是说,我相信r"\w+(\.){,1} [a-zA-Z]\)(( |\,)[a-zA-Z]{,3} [a-zA-Z]\))*" 模式可能会有所帮助(请注意,我绝不是 RegEx 专家,可能有更简洁的写法)。

详细解释请看这里:https://regex101.com/r/j8C09i/3

这个模式的简短版本如下:

  • \w+(\.){,1} 匹配一个单词(a-Z 和/或0-9),后跟零个或一个句点,然后是一个空格。换句话说,这与您正在寻找的WORD + ALPHA) + xx + ALPHA) 模式的WORD 部分匹配。
  • [a-zA-Z]\) 匹配后跟右括号的字母。换句话说,这与模式的ALPHA) 部分匹配。
  • (( |\,)[a-zA-Z]{,3} [a-zA-Z]\))* 匹配一个空格或逗号,然后是一个最多长度为 3 的单词,然后是一个空格,然后是另一个字母,后跟一个右括号,重复零次或多次。换句话说,这与模式的xx + ALPHA) 部分匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    相关资源
    最近更新 更多