Pattern pattern = Pattern.compile("/\\^(.*?)\\|");
String input = "/^/^this is a big|/*this is a bold text|/-this is strike through|";
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println("Found: " + matcher.group(1));
}
System.out.println("That’s all, folks");
Вывод:
Found: /^this is a big
That’s all, folks
Если вы хотите удалить текст между /^
и |
, используйте идиому, приведенную в документации Matcher.appendReplacement()
:
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
matcher.appendReplacement(sb, "/^|");
}
matcher.appendTail(sb);
System.out.println(sb.toString());
/^|/*this is a bold text|/-this is strike through|
Почему ваш код не работал?
Посмотрите внимательнее на учебник Jenkov.Он имеет следующую строку кода:
String patternString = "is";
Шаблон не начинается с /
и не заканчивается /g
.Таким образом, включив эти части, вы требуете их включения в соответствующий текст.Так как они не были в вашей входной строке, ваш шаблон не может соответствовать.Также в вашем коде отсутствовал звонок на Pattern.compile
.Именно в этой строке кода в учебнике:
Pattern pattern = Pattern.compile(patternString);
Ссылка: документация Matcher.appendReplacement()