前端之家收集整理的这篇文章主要介绍了
正则表达式的几种类型,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
【匹配】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(" \n\t\r".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("^h\\w{3}o\\b.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());//查看
获取字符偏移量 } } }