У меня проблема с экранированием символа канала (|) при использовании 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();
}
}
и я хочу получить результат " First ", но фактический результат - " First | SecondName = Second ". Если я изменю код и вместо этого регулярное выражение " FirstName = (. ) \ | *" use " FirstName = (. ) \ | S *", так что результатбудет таким, как я ожидал " Первый ". В чем моя проблема? Я хочу использовать символ конвейера как последний символ, который я хочу видеть в моей строке регулярного выражения, но не понимаю, как это сделать.