首页 > 代码库 > java 正则表达式获取匹配和非获取匹配
java 正则表达式获取匹配和非获取匹配
1 package test1; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class TestExp { 7 /** 8 * 9 * 在使用正则表达式的时候,我们经常会使用()把某个部分括起来,称为一个子模式。 子模式有Capturing和Non-Capturing两种情况。10 * Capturing指获取匹配 :11 * 是指系统会在幕后将所有的子模式匹配结果保存起来,供我们查找或者替换。如后向引用(在表达式的后面应用前面匹配的子字符串)的使用;12 * Non-Capturing指非获取匹配 :13 * 这时系统并不会保存子模式的匹配结果,子模式的匹配更多的只是作为一种限制条件使用,如正向预查,反向预查,负正向预查,负反向预查等。14 * 15 * 在Java中可以使用非获取匹配作为筛选子字符串的条件。例如 想获得“hello world !”中的“hello world ”16 * ,注意,不要感叹号。 就可以再匹配感叹号时使用非获取的正则表达式。("hello world (?=!)")17 * 18 * Java中后向引用的使用:19 * "abc def".replaceFirst("(\\w+)\\s+(\\w+)", "$2 $1"); //结果为def abc 20 * "abc def aaa bbb".replaceAll("(\\w+)\\s+(\\w+)", "$2 $1"); //结果是 def abc bbb aaa21 * 22 * 使用$x替换字符中子字符串。23 * 24 * */25 public static void main(String[] args) {26 /** groupcount 的下标是从0开始的,也就是说如果获取一个匹配项,那么该值为0 */27 /** 正向肯定预查 */28 /**29 * 目的: 查找元字符中符合“win ”格式的子字符串,而且该字符串后面紧跟一个“7”字符串。30 * 31 * */32 /*33 * Pattern ptn = Pattern.compile("win (?=7)",Pattern.UNICODE_CASE) ;34 * Matcher m = ptn.matcher("win 7") ; System.out.println("groupcount: "35 * + m.groupCount()); while(m.find()){ System.out.println(m.group()); }36 */37 /** 正向否定预查 */38 /**39 * 目的: 查找元字符中符合“win ”格式的子字符串,而且该字符串后面没有跟一个“7”字符串。40 * 41 * */42 /*43 * Pattern ptn = Pattern.compile("win (?!7)",Pattern.UNICODE_CASE) ;44 * Matcher m = ptn.matcher("win 8") ; while(m.find()){45 * System.out.println(m.group()); }46 */47 /** 反向肯定预查 */48 /**49 * 目的:查找元字符串中符合“win”的子字符串,而且在该字符串前面还跟着“7”字符串。 获取的是win,因为7是非获取的。50 * 51 * */52 /*53 * Pattern ptn = Pattern.compile("(?<=7)win",Pattern.UNICODE_CASE) ;54 * Matcher m = ptn.matcher("7win") ; while(m.find()){55 * System.out.println(m.group()); }56 */57 /** 反向否定预查 */58 /**59 * 目的:查找元字符串中符合“win”的子字符串,而且在该字符串前面不跟“7”字符串。60 * 61 */62 /*63 * Pattern ptn = Pattern.compile("(?<!7)win",Pattern.UNICODE_CASE) ;64 * Matcher m = ptn.matcher("8win") ; while(m.find()){65 * System.out.println(m.group()); }66 */67 }68 }
java 正则表达式获取匹配和非获取匹配
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。