当我使用Patter.comile()时,在转义符(|)时遇到问题。 我有代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Scratch {
static String finPatternWithPipe() {
String text = "123|FirstName=First|SecondName=Second|567";
Pattern pattern = Pattern.compile("FirstName=(.*)\\|");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
return null;
}
public static void main(String[] args) {
Scratch.finPatternWithPipe();
}
}
并且想要接收结果“ 第一”,但实际结果是“ 第一| SecondName =第二”。 如果我更改代码而使用正则表达式“ FirstName =(。)\ | *”,请使用“ FirstName =(。)\ | S * ”因此结果应为我预期的“ 第一”。 我怎么了我想使用管道字符,就像我想在我的正则表达式字符串中看到的最后一个字符一样,但是不知道该怎么做。
答案 0 :(得分:3)
您需要使量词不贪心:
Pattern.compile("FirstName=(.*?)\\|")
^ add this
否则,.*
尽可能匹配,其中包括管道字符。