Дезинфицирующий ввод перед использованием 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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