正则表达式(RegularExpressions)-- 字符串处理利器

作用:字符串匹配、字符串查找、字符串替换;

    类:java.lang.Stringjava.util,regex.Patternjava.util.regex.Matcher;

    简单认识:

        p("abc".matches("..."));//true

       p("a232333a".replaceAll("//d", "-"));//将数字替换成“-

        Pattern p = Pattern.compile("[a-z]{3}");

       Matcher m = p.matcher("fgh");

       p(m.matches());

       p("fgh".matches("[a-z]{3}"));//等价于上面三句。区别在于上面三句已经编

                                   //译好了,因此执行起来会更快。

 

       public static void p(Object obj) {

           System.out.println(obj);

       }

    打印结果:

       true

a------a

true

true

    进一步认识:

       p("a".matches("."));       

       p("aa".matches("aa"));         

       p("aaaa".matches("a*"));

       p("".matches("a*"));          //X*    X, zero or more times

       p("aaaa".matches("a+"));    //X+     X, one or more times

       p("".matches("a+"));

       p("aaaa".matches("a?"));    // X?    X, once or not at all

       p("".matches("a?"));        

       p("a".matches("a?"));

p("214523123123456".matches("//d{3,100}")); p("192.168.0.aaa".matches("//d{1,3}//.//d{1,3}//.//d{1,3}//.//  d{1,3}"));   //false

       p("192".matches("[0-2][0-9][0-9]"));//true

       /*Greedy quantifiers 

       X{n} X, exactly n times

       X{n,} X, at least n times

       X{n,m} X, at least n but not more than m times */

   范围:(只匹配一个字符)

p("a".matches("[abc]"));

       p("a".matches("[^abc]"));

       p("A".matches("[a-zA-Z]"));

       p("A".matches("[a-z[A-Z]]"));

       p("A".matches("[a-z]|[A-Z]"));

p("R".matches("[A-Z&&[RFG]]"));

    将一个四则表达式按照非数字作为界限分开:

       public class TestExpression {

           public static void main(String[] args) {

           String str = "1111+22*23-3+27/3=";

           //String[] sSplitNum = str.split("[^1234567890]");

           //String[] sSplitNum = str.split("[^//d]");

           //String[] sSplitNum = str.split("[^0-9]");

           String[] sSplitNum = str.split("//D");

           for(int i=0; i<sSplitNum.length; i++) {

               System.out.println(sSplitNum[i]);

              }

           }

}

注:这里还要顺便注意下split这个函数,如果是要以一个字符分开给定的字符串,如字符串“127.0.0.1“要以“.“分开,那么就必须写成”//.”,即:

String IP = “127.0.0.1”;

String[] ipStr = IP.split(“//.”);

 

运用正则表达式匹配一个反斜杠“/“:

System.out.println("//".matches("////"));

 

  测试一个字符串是不是只含有数字:

p("123323421".matches("[0-9]+"));

       p("2323423".matches("//d+"));

p("1212".matches("[//d]+"));

结果都为true;

JavaScript中的“正则表达式“

    Java的正则表达式规则相类似,只要在匹配的模式前后加上”/”即可。如:

    判断一个变量是不是一个实数:

    var str = /^/d+(./d+)?$/;

    str.test(string);    //string为要匹配的字符串

    其中,”^” 表示行的开头;”$”表示行的结尾;是不是一个整数:/^/d+$/

    故其格式为:/^(匹配的模式)$/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章