gpt4 book ai didi

python - 如何在 Python 中使用正则表达式将所有内容匹配到双换行符 "\n\n"?

转载 作者:行者123 更新时间:2023-12-05 09:08:44 31 4
gpt4 key购买 nike

假设我有以下 Python 字符串

str = """
....
Dummyline

Start of matching
+----------+----------------------------+
+ test + 1234 +
+ test2 + 5678 +
+----------+----------------------------+

Finish above. Do not match this
+----------+----------------------------+
+ dummy1 + 00000000000 +
+ dummy2 + 12345678910 +
+----------+----------------------------+
"""

我想匹配第一个表中的所有内容。我可以使用从

开始匹配的正则表达式
"Start"

并匹配所有内容,直到找到双换行符

\n\n

我在另一个 stackoverflow 帖子 ( How to match "anything up until this sequence of characters" in a regular expression? ) 中找到了一些关于如何执行此操作的提示,但它似乎不适用于双换行符的情况。

我想到了下面的代码

pattern = re.compile(r"Start[^\n\n]")
matches = pattern.finditer(str)

基本上在哪里

[^x]

表示匹配所有内容,直到找到字符 x。但这仅适用于字符,不适用于字符串(在本例中为“\n\n”)

有人知道吗?

最佳答案

您可以匹配 Start 直到行尾,然后使用否定先行 (?!

^Start .*(?:\r?\n(?!\r?\n).*)*

解释

  • ^Start .* 从字符串 ^ 的开头匹配 Start 并且除换行符之外的任何字符 0+ 次
  • (?: 非捕获组
    • \r?\n 匹配一个换行符
    • (?!\r?\n) 否定前瞻,断言直接在右边的不是换行符
    • .* 匹配除换行符以外的任意字符 0 次以上
  • )* 关闭非捕获组,重复0+次得到所有行

Regex demo

关于python - 如何在 Python 中使用正则表达式将所有内容匹配到双换行符 "\n\n"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63112829/

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