gpt4 book ai didi

regex - 捕获每组的所有文本

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

我有一些看起来像这样的数据:

DEC 12, 2020
incoming 192.168.0.5 10:30
outgoing 192.168.0.5 13:23
DEC 13, 2020
incoming 192.168.0.6 09:34
outgoing 192.168.0.6 14:12

我正在尝试将日期和该日期的所有数据放入一个分组中,如下所示:

First match
Group 1 - DEC 12, 2020
Group 2 - incoming 192.168.0.5 10:30
outgoing 192.168.0.5 13:23

Second match
Group 1 - DEC 13, 2020
Group 2 - incoming 192.168.0.6 09:34
outgoing 192.168.0.6 14:12

我试过这个正则表达式:

^([A-Z] \d+, \d{4})(.*)

问题是,它一直读到最后,而不是像这样在下一场比赛(2020 年 12 月 13 日)停止:

Group 1 - DEC 12, 2020
Group 2 - incoming 192.168.0.5 10:30
outgoing 192.168.0.5 13:23
DEC 13, 2020
incoming 192.168.0.6 09:34
outgoing 192.168.0.6 14:12

如果我添加 ?像这样:

^([A-Z] \d+, \d{4})(.*?)

我只得到日期。

First Match
Group 1 - DEC 12, 2020
Group 2 - white space

Second Match
Group 1 - DEC 13, 2020
Group 2 - white space

有人可以告诉我我缺少什么吗?我怎样才能让它在下一场比赛而不是行尾或文本结束时停止?所有行的末尾都有一个 CRLF。谢谢。

最佳答案

你可以使用

(?m)^([A-Z]{3} \d+, \d{4})((?:\r?\n(?![A-Z]{3} \d).*)*)

参见 regex demo . 详细信息:

  • (?m) - RegexOptions.Multiline 内联选项
  • ^ - 行首
  • ([A-Z]{3}\d+,\d{4}) - 第 1 组:三个大写 ASCII 字母、空格、一个或多个数字、一个逗号、一个空格,然后是四个位数
  • ((?:\r?\n(?![A-Z]{3}\d).*)*) - 第 2 组:零次或多次出现
    • \r?\n - 仅 CRLF 或 LF 换行序列...
    • (?![A-Z]{3}\d) - 后面没有紧跟三个大写 ASCII 字母、空格、数字
    • .* - 该行的其余部分。

输出:

enter image description here

关于regex - 捕获每组的所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65616223/

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