解决以下正则表达式

时间:2012-10-29 09:15:19

标签: java regex

请考虑以下文字:

  String tempStr =
            "$#<div style=\"text-align:left;\">$#Order-CAS No#$</div>$#abc#$";

    Pattern p = Pattern.compile("(?<=\\$#)(\\w*)(?=#\\$)");
    Matcher m = p.matcher(tempStr);

    List<String> tokens = new ArrayList<String>();
    while (m.find()) {
        System.out.println("Found a " + m.group() + ".");

但它只给我abc ..我想要回答为Order-CASNo和abc。

2 个答案:

答案 0 :(得分:4)

表达式\\w*与连字符或空格不匹配。请改为[\\w\\s-]*

Pattern p = Pattern.compile("(?<=\\$#)([\\w\\s-]*)(?=#\\$)");

在此处阅读有关角色类的更多信息:

答案 1 :(得分:0)

终于得到了解决方案。

Pattern p = Pattern.compile("(?<=\\$#)([\\w-\\s\\w]*)(?=#\\$)");