gpt4 book ai didi

regex - 正则表达式,用于用新行捕获模式

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

我有以下字符串

1h 30min: Title 
- Description Line 1
1h 30min: Title
- Description Line 1
- Description Line 2
- Description Line 3

我想使用正则表达式获得以下结果。
Match 1:
"1h 30min: Title
- Description Line 1"

Group 1: "1h"
Group 2: "30min"
Group 3: "Title
- Description Line 1"
Match 2:
"1h 30min: Title
- Description Line 1
- Description Line 2
- Description Line 3"

Group 1: "1h"
Group 2: "30min"
Group 3: "Title
- Description Line 1
- Description Line 2
- Description Line 3"

我有以下正则表达式 https://regex101.com/r/dp5zKq/1
(([0-9]{1,2}h)\s*([0-9]{1,2}min)*\:)+?((.*\n*)*)

但是我无法弄清楚如何使任何字符/换行正则表达式在小时和分钟都达到新的匹配时停止。有任何想法吗?

最佳答案

您可以匹配组1和2中的h和min部分。

如果不是以小时模式开头(或者也包括分钟),则使用与整行匹配的重复模式。

([0-9]{1,2}h)[ ]*([0-9]{1,2}min):[ ]*(.*(?:\n(?![0-9]{1,2}h).*)*)

说明
  • ([0-9]{1,2}h)[ ]*捕获组1,h格式
  • ([0-9]{1,2}min)捕获组2,最小格式
  • :[ ]*匹配:和1个以上空格(空格不必在字符类中,这只是为了清楚起见)
  • (捕获组3
  • .*匹配除换行符0+次以外的任何字符
  • (?:非捕获组
  • \n(?![0-9]{1,2}h).*匹配换行符,断言右边的不是h模式。如果不是,则匹配除换行符0+次
  • 外的任何字符
  • )关闭非捕获组并重复0次以上
  • )关闭第3组

  • Regex demo

    关于regex - 正则表达式,用于用新行捕获模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56331647/

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