您的位置:首页 > 编程语言 > Java开发

Java 正则表达式

2016-04-03 15:32 330 查看
普通的匹配可以直接使用String类下的方法matches.

下面看下如何提取特定的字符串

public static void demo1() {
// 提取长度为3的单词
String words = "I' m jop, today is good day,do you think so";
String regex = "\\b\\w{3}\\b"; // '()'表示分组
// 1.把规则编译成模式对象
Pattern pattern = Pattern.compile(regex);
// 2.由模式对象获得匹配对象
Matcher matcher = pattern.matcher(words);
// 3通过find找到下一个匹配的子串,(group紧随find其后)
while (matcher.find()) {
// matcher.group()等价于matcher.group(0) 表示匹配的第0组,本身
System.out.println(matcher.group(0));
}
}

protected static void demo2() {
// 提取超链接
String inStr = "<a href='http://baidu.com'>百度</a><a href='http://www.baidu.com'>百度</a>";
String regex = "href='(.+?)'"; // 这里得使用‘?’终止贪婪,否则它会匹配后面的’
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(inStr);
while (matcher.find()) {
//group(0)表示匹配的这个字符串,如第一次的href='http://baidu.com'
System.out.println(matcher.group(0));
//group(1)表示匹配第1个()里面的字符,如第一次的http://baidu.com
System.out.println(matcher.group(1));
}
}
注意:如果有多个括号且嵌套,则其顺序是从从左到右,从外到内 group()的下标依次递增
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: