gpt4 book ai didi

python - 使用 Regex 提取特定单词后跟特定语法(例如括号)

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:54 24 4
gpt4 key购买 nike

我有一个非常大的文档,其中包含不同格式的章节引用。我想使用 Python 和正则表达式提取这些引用。

字符串格式示例:

1) 第 23 节

2) 第 45(3) 条

3) 第 75 节 (e) 点

4) 第 21(1)、54(2)、78(1) 条

现在,我有以下代码:

s = "This is a sample for Section 231" 
m = re.search('Section\\W+(\\w+)', s)
m.group(0)

输出为:第 231 节

这非常有效,除了它不考虑其他格式的情况。

有什么方法可以表明对于 231(1)(1) 也应该被提取?或者如果列出了其他几个部分,则包括以下部分编号?

如果您认为 Regex 在这种情况下不是最好的,我也愿意使用其他库。谢谢!

最佳答案

尝试:

Sections?\W+(\w+)(\(\w+\))?(, (\w+)(\(\w+\))?)*

Demo

>>> s = 'Sections 21(1), 54(2), 78(1)'
>>> res = re.search(r'Sections?\W+(\w+)(\(\w+\))?(, (\w+)(\(\w+\))?)*', s)
>>> res.group(0)
# => 'Sections 21(1), 54(2), 78(1)'

解释:

  • Sections? 将“Section”与可选的 s
  • 匹配
  • \W+(\w+)(\(\w+\))? 匹配节号/标题(正如您所做的那样)并在括号中添加可选文本
  • (, (\w+)(\(\w+\))?)* 允许在逗号和空格之后重复节号模式

编辑
要排除 Section 1 of Other Book,您可以结合使用词边界和否定前瞻:

Sections?\W+(\w+)(\(\w+\))?(, (\w+)(\(\w+\))?)*\b(?! of)

Demo

  • \b 确保匹配到单词结尾
  • (?! of) 检查单词边界后没有空格后跟 of

关于python - 使用 Regex 提取特定单词后跟特定语法(例如括号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49197821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com