gpt4 book ai didi

python - 模式的惰性匹配

转载 作者:太空宇宙 更新时间:2023-11-03 13:56:11 24 4
gpt4 key购买 nike

给定字符串 1.blah blah2.yada yada 我想提取 1.blah blah2.yada yada。我尝试了这个 \d\..+ 但它匹配整个字符串。 \d\..+? 匹配 1.b2.y。我只需要懒惰地匹配模式。有什么想法吗?

最佳答案

模式末尾的 .+ 匹配除换行符之外的所有 1+ 个字符,直至字符串/行末尾。模式末尾的 .+? 仅匹配 1 个字符(但这是必需的),因为 +? 是一个惰性量词,仅需要 1 个字符出现。

您可以使用

\d+\..*?(?=\d+\.|$)

请参阅regex demo 。如果字符串内可以有换行符,请添加 re.DOTALL 修饰符。

详细信息

  • \d+ - 1+ 位数字
  • \. - 一个点
  • .*? - 除换行符之外的任何 0+ 个字符(如果使用 re.DOTALL,甚至包括换行符),尽可能少,直到(但不包括)第一次出现...
  • (?=\d+\.|$) -(与两个选项之一匹配的正向前瞻:)1+ 位数字,然后是 . 或字符串结尾.

Python 演示:

import re
rx = r"\d+\..*?(?=\d+\.|$)"
s = "1.blah blah2.yada yada3.yadddaaa"
print(re.findall(rx, s))
# => ['1.blah blah', '2.yada yada', '3.yadddaaa']

请参阅Python demo .

关于python - 模式的惰性匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49591612/

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