{%test%}< /code> где «тест» - это имя аргумента. < /p>
private static final Pattern _hasArgPattern = Pattern.compile( "\\{%[a-zA-Z0-9_-]*%\\}" );
private static final Pattern _getArgNamePattern = Pattern.compile( "\\{%([a-zA-Z0-9_-]*)%\\}" );
private static final Pattern _replaceArgPattern = Pattern.compile( "(\\{%[a-zA-Z0-9_-]*%\\})" );
< /code>
Я сначала проверяю, присутствует ли аргумент в строке, затем я пытаюсь извлечь имя аргмемента, а затем я заменяю весь шаблон на значение аргументов, содержащиеся в Hashmap: < /p>
if( _hasArgPattern.matcher( attr ).matches() )
{
String argName = _getArgNamePattern.matcher( attr ).group( 1 );
if( ! args.containsKey( argName ) )
{
throw new Exception( "Argument \"" + argName + "\" not found." );
}
return _replaceArgPattern.matcher( attr ).replaceFirst( args.get( argName ) );
}
else
{
return attr;
}
< /code>
Я протестировал свой reg exps на онлайн -тестере REG Exp, и они, кажется, работают как намеренный.
Но по какой -то причине я получаю исключение при попытке извлечь имя аргумента с использованием Group (): < /p>
java.lang.IllegalStateException: No successful match so far
< /code>
Что это может быть связано? Спасибо

Подробнее здесь: https://stackoverflow.com/questions/273 ... -exception