如何使用 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));
}
}
}
我正在尝试捕获后视匹配的文本。
我的代码:
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));
}
}
}