String regex="[^{for(\\s+)name='](.*)('\\})";
String str="{for name='user'}<a href='id=${id}'>${name}</a>{/for}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
StringBuffer buffer = new StringBuffer();
while(matcher.find()){
buffer.append(matcher.group()+"\n");
}
System.out.println(buffer.toString());
输出结果: user'}怎么回事?
是我哪里写错了吗?
搞了一天都没人解决.希望高手帮帮忙!谢谢

解决方案 »

  1.   

    可是我转义了也不行哦
    [^\\{for(\\s+)name='](.*)('\\})
      

  2.   

    获取{for name='user'} 中 name属性的值.
    应该懂我的意思吧?
      

  3.   

    String regex="[^{for(\\s+)name='](.*)('\\})";
    改为
    String regex="[^{for(\\s+)name='](.*)(?='\\})";
      

  4.   

    谢谢.你这个可以..
    但是
    {for name='auser'}<a href='id=${aid}'>${aname}</a>{/for}像这个匹配出来的是 user 怎么把其中的a去掉了?
    这是怎么回事?
      

  5.   

    所有字符串只要匹配user出来,是吗?
    我觉得你还是先把你要实现的功能理清楚
      

  6.   

    {for name='auser'} <a href='id=${aid}'>${aname} </a>{/for}  name='这里可以是任意值'    就是需要 匹配所有 for 里 name 等于号里的值.
      

  7.   

    那就把String regex="[^{for(\\s+)name='](.*)(?='\\})";
    改为String regex="(?<=\\{for(\\s{0,50})name=')(.*)(?='\\})";