gpt4 book ai didi

python - 通过正则表达式获取重复内容

转载 作者:行者123 更新时间:2023-12-01 01:51:04 25 4
gpt4 key购买 nike

我有一些格式如下的内容:

text = """Pos no
...
... 25/gm
The Text to be
...
excluded
Pos no
...
... 46 kg
The Text to be
...
excluded
Pos no
...
... 46 xunit
End of My Text

哪里,Pos no... 25/gm - 这是一种表格结构,我必须从中提取值。

要...排除的文本 - 这具有恒定的开始(可以说要被排除的文本),但没有明确的结束,即排除 可能不存在。

我的文字结束 -该文本将始终存在。

我想要一个仅包含表格内容的列表,即

["Pos no
...
... 25/gm",
"Pos no
...
... 46 kg",
"Pos no
...
... 46 xunit"]

这是我的尝试,但它没有获取正确的列表:

re.findall(r'(Pos no .+?)(?: |The Text to be|End of My Text)', text, re.DOTALL | re.M)

最佳答案

您可以使用

re.findall(r'(?sm)(Pos no\r?\n.+?)[\r\n]+(?:The Text to be|End of My Text)', text)

请参阅Python demo

请注意,Pos no 没有空格,但您的模式需要它。此外,仅当右侧上下文位于行首时才匹配它将使匹配更安全。

图案详细信息

  • (?sm) - re.DOTALLre.MULTILINE 内联修饰符(用于较短的代码)
  • (Pos no\r?\n.+?) - 第 1 组(re.findall 返回的内容):
    • Pos no - 文字子字符串
    • \r?\n - CRLF 或 LF 换行符
    • .+? - 任何 1 个以上的字符,尽可能少,直到后续子模式的最左边出现
  • [\r\n]+ - 1+ 换行符
  • (?:The Text to be|End of My Text) - 两个子字符串之一,The Text to beEnd of My Text

关于python - 通过正则表达式获取重复内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50722530/

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