Вы не должны проходить мимо Pattern.DOTALL
; это приводит к тому, что переводы строк совпадают с .*
, что именно то, что вы не хотите здесь.
Лучшее регулярное выражение будет:
Pattern pattern = Pattern.compile("faultString: (.*)");
, а затем, вместо matcher.matches()
, используйте find()
, чтобы увидеть, появляется ли он где-либо в строке.
Обратите внимание, что я изменил регулярное выражение, чтобы сгруппировать только часть «Моя ошибка», а не «: Моя ошибка», как это было бы в исходной.
Просто чтобы прояснить ситуацию, вот код, который я тестировал:
Pattern pattern = Pattern.compile("faultString: (.*)");
Matcher matcher = pattern.matcher(errorString);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
, где errorString
совпадает с вашим.
Выход:
My Error