如何使用 java 捕捉后视

How to capture lookbehind using java

我正在尝试捕获后视匹配的文本。

我的代码:

private static final String t1="first:\\w*";
private static final String t2="(?<=\w+)=\".+\"";
private static final String t=t1+'|'+t2;

Pattern p=Pattern.compile(t);
Matcher m=p.matcher("first:second=\"hello\"");
while(m.find())
      System.out.println(m.group());

输出:
first:second
="你好"

我预计:
first:second
第二个="你好"

如何更改我的正则表达式,以便获得我期望的结果。

谢谢

为什么不只使用一个正则表达式来匹配所有内容?

(first:)(\w+)(=".+")

然后简单地使用一个匹配项,并将组 1 和组 2 用于第一个预期行,将组 2 和 3 用于第二个预期行。

我将您的示例修改为可编译并展示了我的尝试:

package examples.Whosebug.q71651411;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Q71651411 {
  public static void main(String[] args) {
    Pattern p = Pattern.compile("(first:)(\w+)(=\".+\")");
    Matcher m = p.matcher("first:second=\"hello\"");
    while (m.find()) {
      System.out.println("part 1: " + m.group(1) + m.group(2));
      System.out.println("part 2: " + m.group(2) + m.group(3));
    }
  }
}