{%test%}< /code> wobei "Test" der Name des Arguments ist. < /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>
Ich prüfe zuerst, ob in der Zeichenfolge ein Argument vorhanden ist, dann versuche ich, den Namen des Argmuments zu extrahieren, und dann ersetze ich das gesamte Muster durch den in einem HashMap enthaltenen Argumentewert: < /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>
Ich habe meine Reg -Exps auf einem Online -Reg -Exp -Tester getestet und sie scheinen als intent zu arbeiten.java.lang.IllegalStateException: No successful match so far
< /code>
Worauf kann das sein? Danke
