有 Java 编程相关的问题?

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

同一行上多次字符串之间的Java正则表达式

我正在尝试提取“[::[”和“]::]”之间的值。我遇到的问题是,在同一个字符串中有多个这样的实例,而它只拾取第一个实例。我的正则表达式有什么帮助吗?这是我的代码:

示例输入:line = "TEST [::[NAME]::] HERE IS SOMETHING [::[DATE]::] WITH SOME MORE [::[Last]::]";

Pattern p = Pattern.compile("\\[::\\[(.*?)\\]::\\]");
Matcher m = p.matcher(line);
if (m.find()) {
    System.out.println(m.group(1));
}

共 (1) 个答案

  1. # 1 楼答案

    你的正则表达式还可以。你需要做的是循环匹配,一个Matcher可以匹配几次

    while (m.find())
        System.out.println(m.group(1));
    

    一个Matcher将在最后一个匹配结束后重试(除非您使用\G,但这非常特殊)