繁体   English   中英

正则表达式在某个短语之后在多行字符串中查找匹配项

[英]Regex to find matches in a multi-line string after a certain phrase

我正在处理的内容:

dontAccessMe:
abc
def

accessMe:
xyz
xyzt
foo
bar

我需要在短语accessMe:下方的行中捕获 3 个字母的单词。 它们是: xyz foo bar

我该如何实现这一目标?

我试过(?<=accessMe:)\s*(\w{3})并在第一个匹配的单词后停止。

我编写正则表达式的语言是 Java 15。

您在这里不需要正则表达式。 使用 Java 给您的优势。 假设输入是一个字符串,您可以在用换行符\n分割字符串后使用Stream#dropWhile方法。

Arrays.stream(string.split("\\n"))                // split each line to a String
      .dropWhile(str -> !str.equals("accessMe:")) // ignore until "accessMe:" is reached
      .skip(1)                                    // skip "accessMe:" itself
      .forEach(System.out::println);              // print them out or collect

如果输入是List<String>本身,您可以直接在其上调用.stream().dropWhile(..)而无需拆分。

我需要捕获 3 个字母的单词

如果您确实被限制为仅匹配三个字母的单词,则可以使用额外的filter 将其放在skip方法调用之后:

      .filter(str -> str.length() == 3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM