gpt4 book ai didi

Java正则表达式匹配以固定标签开头的多行记录

转载 作者:行者123 更新时间:2023-11-29 07:01:52 25 4
gpt4 key购买 nike

以下是多行记录列表的示例,每行记录都以固定字符串标签 (LABEL) 开头:

<Irrelevant line>
...
<Irrelevant line>
LABEL ...
...
...
LABEL ...
...
...
LABEL ...
...
...
LABEL ...
...
...

是否有一个Java正则表达式可以完成上述操作并提取每条记录,即

LABEL ...
...
...

此外,这是提取这些记录的最快方法,还是逐行读取并检查字符串的开头会产生更快的结果?

最佳答案

要遍历所有 LABEL 组,请使用:

Pattern regex = Pattern.compile("(?sm)LABEL.*?(?=^LABEL|\\Z)");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
// the current LABEL group: regexMatcher.group()
}

参见 the demo对于各种比赛。

解释

  • (?s) 激活DOTALL 模式,允许点跨行匹配
  • (?m) 打开多行模式,允许 ^$ 在每一行上匹配
  • LABEL 匹配文字字符
  • .*? 延迟匹配所有字符直到...
  • 向前看 (?=^LABEL|\\Z) 可以断言后面是下一个 LABEL 或字符串结尾的点

关于Java正则表达式匹配以固定标签开头的多行记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24605556/

25 4 0