gpt4 book ai didi

Java - 正则表达式组匹配异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:32 24 4
gpt4 key购买 nike

我正在尝试在 XML 文件中创建一些模板,并且我想要使用以下语法的参数:

{%test%} 其中“test”是参数的名称。

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_-]*%\\})" );

我首先检查字符串中是否存在参数,然后尝试提取参数的名称,然后用 HashMap 中包含的参数值替换整个模式:

    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;
}

我在在线 reg exp 测试仪上测试了我的 reg exp,它们似乎按预期工作。但由于某种原因,我在尝试使用 group() 提取参数名称时遇到异常:

java.lang.IllegalStateException: No successful match so far

这可能是因为什么?谢谢:)

最佳答案

问题似乎出在这条线上:

String argName = _getArgNamePattern.matcher( attr ).group( 1 );

不能调用matcher#group()打电话前 matcher#find()matcher#matches()方法。

关于Java - 正则表达式组匹配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27376129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com