Java 正则表达式

来源:互联网 发布:嘻哈 知乎 编辑:程序博客网 时间:2024/04/29 09:31

普通的匹配可以直接使用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.comSystem.out.println(matcher.group(1));}}
注意:如果有多个括号且嵌套,则其顺序是从从左到右,从外到内 group()的下标依次递增

0 0