正则表达式的几种类型
发布时间:2020-12-14 00:57:14 所属栏目:百科 来源:网络整理
导读:【匹配】matchs方法 package regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { //以下所有测试均为true //简单认识正则表达式的概念 /*System.out.println("abc".matc
【匹配】matchs方法 package regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { //以下所有测试均为true //简单认识正则表达式的概念 /*System.out.println("abc".matches("...")); p("a2427847dhsj".replaceAll("d","-")); Pattern pa = Pattern.compile("[a-z]{3}"); //{3,}至少3个 {1,10}1到10之间 Matcher m = pa.matcher("hjk"); p(m.matches());*/ //上面三句可以用 p("hjk".matches("[a-z]{3}");); //初步认识 . * + ? /*p("a".matches(".")); p("".matches("a*"));//引号内是0个或多个字符 p("1".matches("d+"));//引号内1个或多个数 p("".matches("a?"));//引号内0个或1个 p("192.168.1.220".matches("d{1,3}.d{1,3}.d{1}.d{3}")); p("138".matches("[0-9][0-9][0-9]"));*/ //认识范围 /*p("a".matches("[abvc]"));//取中括号里面的 p("a".matches("[^abvc]"));//【该测试为false】取除了括号里面的任意一个字符,注意一个中括号只能匹配一个字符 p("a".matches("[a-zA-Z]"));//取a-z或A-Z p("a".matches("[a-z]|[A-Z]"));//取a-z或A-Z p("a".matches("[a-z[A-Z]]"));//取a-z或A-Z p("R".matches("[A-Z&&[RFG]]"));//取a-z并且是RFG三者之一 */ //认识S W D /* p("1".matches("d"));//0-9 p("a".matches("D"));//除0-9外任意字符 p(" ntr".matches("s{4}"));//空白字符 p("asd".matches("S{3}"));//无空白字符 p("asd_2".matches("w{5}"));//单词[a-zA-Z_0-9] p("-----".matches("W{5}"));//除了单词[a-zA-Z_0-9]之外 p("".matches("W")); p("".matches("\")); */ //posix style //p("a".matches("p{Lower}")); //认识边界 /*p("hello world".matches("^h.*"));//^表示一行的开头,开头一个字符是h后面跟0或多个字符 p("hello world".matches("^h.*ld")); p("hello world".matches("^h.*ld$"));//$是行的结尾 p("hello world".matches("^hw{3}ob.world"));//b是单词结尾回车,空格都算 */ //认识空白行 System.out.println("aaa sds".matches(".*sds$")); p(" n".matches("^[s&&[^n]]*n$"));//^在[]外面表示行首,里面表示非 。判断行首为空格但不是换行 } public static void p(Object o){ System.out.println(o); } } 【切割】split方法 public class Demo { public static void main(String[] args) { splitDemo(); } public static void splitDemo(){ String str = "hello dad dgdhgd rr";//如果是多个空格,下面按照每(多)个空格切,则每(多)个空格切一次 String reg = " ";//多个空格可以" +" //String reg = ".";//如果用特殊符号切割需要转义"." String[] arr = str.split(reg); for(String s:arr){ System.out.println(s); } } } 【按叠词切割】 public class Demo { public static void main(String[] args) { splitDemo(); } public static void splitDemo(){ String str = "sdjjkssskrreooa"; String reg = "(.)1+";//()可以蒋某字符封装成组,从1开始 String[] arr = str.split(reg); for(String s:arr){ System.out.println(s); } } } 【替换】replaceAll方法 【替换将重复出现的字符替换成一个】 public static void replaceDemo(){ String str = "sdjjkssskrreooa"; String reg = "$1";//通过$1获取封装的第一个组 String arr = str.replaceAll("(.)1+","$1"); System.out.println(arr); } 【获取】获取指定规则的字符串 package regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo { public static void main(String[] args) { get(); } public static void get(){ String str = "sdhj kif lkj hdys"; String reg = "b[a-z]{3}b"; //将规则封装成对象 Pattern p = Pattern.compile(reg); //让正则对象和要作用的字符串关联,获取匹配器对象。 Matcher m = p.matcher(str); //讲规则作用到字符串上,并进行伏虎规则的子串查找 while(m.find()){//find相当于一个迭代器,每次查找完之后向后迭代 System.out.println(m.group());//获取匹配后的结果 System.out.println(m.start()+"..."+m.end());//查看获取字符偏移量 } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |