gpt4 book ai didi

c# - 正则表达式以特定模式开始新匹配

转载 作者:行者123 更新时间:2023-12-04 15:10:20 24 4
gpt4 key购买 nike

你好,我是正则表达式的新手,有一个小的,也许很简单的问题。

我有给定的文本:

17.11.2020 15:32 typical Pat. seems sleeping
Additional test

17.11.2020 15:32 typical Pat. seems sleeping
Additional test

17.11.2020 15:32 typical Pat. seems sleeping
Additional test

我当前的正则表达式 (\d{2}.\d{2}.\d{4}\s\d{2}:\d{2})\s?(.*)只匹配到 sleep ,但正确重新匹配 3 个匹配项。但我还需要第二组中的 Additional test 文本。我尝试了类似 (\d{2}.\d{2}.\d{4}\s\d{2}:\d{2})\s?([,.:\w\s]*) 但现在我只有一场巨大的比赛,因为第二组将一切都带到了最后。

我如何匹配所有内容,直到带有日期的新行开始并从那里创建新的匹配项?

最佳答案

如果您确定只有一个额外的行可以匹配,您可以使用

(?m)^(\d{2}\.\d{2}\.\d{4}\s\d{2}:\d{2})\s*(.*(?:\n.*)?)

参见 regex demo .详情:

  • (?m) - 多行修饰符
  • ^ - 行首
  • (\d{2}\.\d{2}\.\d{4}\s\d{2}:\d{2}) - 第 1 组:日期时间字符串
  • \s* - 零个或多个空格
  • (.*(?:\n.*)?) - 第 2 组:除换行符以外的任何零个或多个字符,尽可能多,然后是可选行,然后是换行符尽可能多地使用除换行符以外的任何零个或多个字符。

如果可以有任意数量的行,你可以考虑

(?m)^(\d{2}\.\d{2}\.\d{4}[\p{Zs}\t]\d{2}:\d{2})[\p{Zs}\t]*(?s)(.*?)(?=\n\d{2}\.\d{2}\.\d{4}|\z)

参见 this regex demo .这里,

  • (?m)^(\d{2}\.\d{2}\.\d{4}[\p{Zs}\t]\d{2}:\d{2 }) - 与上面的匹配相同,只是 \s 替换为 [\p{Zs}\t] 只匹配水平空白
  • [\p{Zs}\t]* - 0+ 水平空白字符
  • (?s) - 现在,. 将匹配任何字符,包括换行符
  • (.*?) - 第 2 组:任何零个或多个字符,尽可能少
  • (?=\n\d{2}\.\d{2}\.\d{4}|\z) - 直到换行符出现在最左边,然后是日期字符串,或直到字符串的末尾。

关于c# - 正则表达式以特定模式开始新匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65289844/

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