@param {Object} config 对话框的参数配置对象。
@param {Object,Boolean,Number,String} value 设置的返回值。
@param {Function} [callback] 当对话框关闭时调用的函
上面这段String的格式为"@param+一个空格+{类型(大括号里面不能有空格)}+一个空格+变量名(有可能是放在[]里面的)+一个空格+一段解释(后面的内容没有要求)"
高手指点下怎么匹配这种类型的String!

解决方案 »

  1.   

    public static void main(String[] args) {
    String s = "@param {Object} config 对话框的参数配置对象。\n"
    + "@param {Object,Boolean,Number,String} value 设置的返回值。 \n"
    + "@param {Function} [callback] 当对话框关闭时调用的函\n";
    Pattern pattern = Pattern.compile("^@param \\{(\\w*(,\\w*)*)\\} (\\w*|(\\[\\w*\\])) .*$",
    Pattern.MULTILINE);
    Matcher matcher = pattern.matcher(s);
    while (matcher.find()) {
    System.out.println(matcher.group());
    //for(int i = 0; i < matcher.groupCount();i ++)
    //System.out.println("[" + matcher.group(i) + "]");
    }

    }
    }
      

  2.   

    我来写个正则式吧:
    \b@para\s{1}\{[^\s\}]\}\s{1}(\w+)\s{1}(\w+)*
    对应于Java的匹配符为:
    String regex ="\\b@para\\s{1}\\{[^\\s\\}]\\}\\s{1}(\\w+)\\s{1}(\\w+)*";
      

  3.   

    修改一下 "^@param \\{(\\w+(,\\w+)*)\\} (\\w+|(\\[\\w+\\])) .*$"
      

  4.   

    测试通过import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class TestRegex2 {
    public static void main(String[] args) {

    String str = "@param {Function} [callback] 当对话框关闭时调用的函";  
    String regex = "@param\\s\\{[a-zA-Z,]+[^\\s]\\}\\s[\\[]?[a-zA-Z0-9]+[\\]]?\\s\\w*";

    Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(str);
            
            if(matcher.find())
             System.out.println(matcher.group());
    }}