有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正则表达式根据分隔组的分隔符的数量获取n个组

我有两个像这样的linux命令

ntpq -pn | sed -n '1,2!p' echo "%%%" chage -l root 

%%%是我正在使用的分隔符,用于解析输出

上面的命令返回:

remote refid st t when poll reach delay offset jitter
============================================================================
*NTP_SERVER SOME_IP_HERE 4 u 36 1024 77 0.511 -4.415 197.945
%%%
Password inactive : never
Password expire : never\

当我只想获取第二个命令的输出时,我拥有的%%%((?:.*))正则表达式可以很好地工作,但是如果我在这个命令后面有更多的输出,并用%%分隔会怎么样。我也想把他们分成不同的小组

如何转换我的正则表达式模式,以便它捕获由分隔符分隔的单独组中的所有输出


共 (1) 个答案

  1. # 1 楼答案

    假设您有一个多行字符串,在第一个%%%分隔符之前有一些不重要的文本,您可以先删除这个不重要的文本,然后用%%%拆分:

    String[] entries = text.replaceFirst("(?s)^.*?%%%[\r\n]*", "").split("\\s*%%%\\s*");
    

    first regex demosecond regex demo

    详细信息

    • (?s)-.现在匹配任何字符(与^{}相同)
    • ^-字符串的开头
    • .*?-任何零个或多个字符,尽可能少
    • %%%-一个%%%字符串
    • [\r\n]*-零个或多个CR或LF字符