关于正则表达式的匹配问题

anto1985 2007-12-06 11:00:37
@param {Object} config 对话框的参数配置对象。
@param {Object,Boolean,Number,String} value 设置的返回值。
@param {Function} [callback] 当对话框关闭时调用的函
上面这段String的格式为"@param+一个空格+{类型(大括号里面不能有空格)}+一个空格+变量名(有可能是放在[]里面的)+一个空格+一段解释(后面的内容没有要求)"
高手指点下怎么匹配这种类型的String!
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
imi00 2007-12-06
  • 打赏
  • 举报
回复
修改一下 "^@param \\{(\\w+(,\\w+)*)\\} (\\w+|(\\[\\w+\\])) .*$"
seaforce 2007-12-06
  • 打赏
  • 举报
回复
我来写个正则式吧:
\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+)*";
imi00 2007-12-06
  • 打赏
  • 举报
回复
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) + "]");
}

}
}
Clesome_VC 2007-12-06
  • 打赏
  • 举报
回复
测试通过

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

}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧