gpt4 book ai didi

python - 正则表达式仅匹配从左到右阅读的最后一次出现

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:07 25 4
gpt4 key购买 nike

我有这个字符串。

Votre vol : Casablanca - Paris Mercredi 31 aût 2016 AF1197 - Ecoi 7 septembre 2016 AF1196 - Economy 15:20 Paris,Charles de Gaulle (CDG),法国 - Terminal 2E Heure Limite d'Enregister un supplément。

使用以下正则表达式

(?:Votre vol|您的航类)(.*?([0-9]{1,2}\s[^\s]+?\s[0-9]{4}) )+

我想在不同的组中捕捉 31 août 20167 septembre 2016

如果我删除最后一个日期,则会捕获第一个日期。

(Python 风格)

Regex101 link

最佳答案

由于无法使用 re 将所有捕获的子字符串保留在一个组中,因此您只能遵循以下两步过程:

  • 使用您当前的正则表达式提取子字符串
  • 然后,使用像 re.findall(r'\b[0-9]{1,2}\s+\S+\s+[0-9]{4}\b' 这样的子模式提取日期, s)(参见 regex demo)。

使用 PyPi regex 模块,您可以使用 1-pass 方法获得所有必要的结果,因为该库存储每组的所有捕获。

关于正则表达式的小提示:[^\s]+?\s 可以写成 \S+\s 因为 [^\s] 匹配除空格以外的任何字符,而 +? 惰性量词将使匹配比使用贪婪的 + (\s 是相反的简写字符类,所以 \S+\s 在这里是最优的)。

关于python - 正则表达式仅匹配从左到右阅读的最后一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42720620/

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