Дезинфицирующий ввод перед использованием AppendReplacemation с сопоставлением шаблоновJAVA

Программисты JAVA общаются здесь
Anonymous
Дезинфицирующий ввод перед использованием AppendReplacemation с сопоставлением шаблонов

Сообщение Anonymous »

У меня есть проблема с методом AppendReplacement . Я обрабатываю многие источники, и случается, что некоторые из них содержат именованную группу (например, $ {name} < /code>). < /P>

Пример кода: < /p>

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HelloWorld{

private static final Pattern SOURCE_BLOCK_PATTERN = Pattern.compile(".*?");

public static void main(String []args){
String inputText = "
something

@${xx}

something
";

Matcher matcher = SOURCE_BLOCK_PATTERN.matcher(inputText);
StringBuffer buffStr = new StringBuffer();

while (matcher.find()) {
String group = matcher.group();
group = group.replaceAll("", "");
matcher.appendReplacement(buffStr, group);
}
matcher.appendTail(buffStr);
String outputText = buffStr.toString();

}
}
< /code>

и результат: < /p>

Exception in thread "main" java.lang.IllegalArgumentException: No group with name {xx}
at java.util.regex.Matcher.appendReplacement(Matcher.java:849)
at HelloWorld.main(HelloWorld.java:17)
< /code>

Как мне выполнить такую замену, чтобы ошибки не было? < /p>

Подробнее здесь: https://stackoverflow.com/questions/605 ... n-matching

Вернуться в «JAVA»