中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      java中正則表達式概述

      時間:2024-08-22 06:33:09 JAVA認證 我要投稿
      • 相關推薦

      java中正則表達式概述

        正則表達式是計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。那么java正則表達式的內容是什么呢?下面跟yjbys小編一起來看看吧!

        一、正則表達式到底是什么東西?

        在編寫處理字符串的程序或網頁時,經常會有查找符合某些復雜規則的字符串的需要。正則表達式就是用于描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。

        很可能你使用過Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某個目錄下的所有的Word文檔的話,你會搜索*.doc。在這里,*會被解釋成任意的字符串。和通配符類似,正則表達式也是用來進行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求——當然,代價就是更復雜——比如你可以編寫一個正則表達式,用來查找所有以0開頭,后面跟著2-3個數字,然后是一個連字號“-”,最后是7或8位數字的字符串(像010-12345678或0376-7654321)。

        二、正則表達式的基本操作

        正則表達式定義:符合一定規則的表達式。

        作用:用于專門操作字符串。

        特點:用于一些特定的符號來表示一些代碼操作。這樣就簡化書寫。所以學習正則表達式,就是在學習一些特殊符號的使用。

        好處:可以簡化對字符串的復雜操作。

        弊端:符號定義越多,正則越長,閱讀性越差。

        具體操作功能:

        1,匹配:String matches方法。用規則匹配整個字符串,只要有一處不符合規則,就匹配結束,返回false。

        2,切割:String split();

        3,替換:String replaceAll(regex,str);如果regex中有定義組,可以在第二參數中通過$符號獲取正則表達式中的已有的組。

        4,獲。簩⒆址械姆弦巹t的子串取出。

        操作步驟:

        1),將正則表達式封裝成對象。

        2),讓正則對象和要操作的字符串相關聯。

        3),關聯后,獲取正則匹配引擎。

        4),通過引擎對符合規則的子串進行操作,比如取出。

        三、API文檔中常用符號

      字符類

      [abc]

      a、b 或 c(簡單類)

      [^abc]

      任何字符,除了 a、b 或 c(否定)

      [a-zA-Z]

      a 到 z 或 A 到 Z,兩頭的字母包括在內(范圍)

      [a-d[m-p]]

      a 到 d 或 m 到 p:[a-dm-p](并集)

      [a-z&&[def]]

      d、e 或 f(交集)

      [a-z&&[^bc]]

      a 到 z,除了 b 和 c:[ad-z](減去)

      [a-z&&[^m-p]]

      a 到 z,而非 m 到 p:[a-lq-z](減去)

      預定義字符類

      .

      任何字符(與行結束符可能匹配也可能不匹配)

      \d

      數字:[0-9]

      \D

      非數字: [^0-9]

      \s

      空白字符:[ \t\n\x0B\f\r]

      \S

      非空白字符:[^\s]

      \w

      單詞字符:[a-zA-Z_0-9]

      \W

      非單詞字符:[^\w]

      邊界匹配器

      ^

      行的開頭

      $

      行的結尾

      \b

      單詞邊界

      \B

      非單詞邊界

      \A

      輸入的開頭

      \G

      上一個匹配的結尾

      \Z

      輸入的結尾,僅用于最后的結束符(如果有的話)

      \z

      輸入的結尾

      Greedy 數量詞

      X?

      X,一次或一次也沒有

      X*

      X,零次或多次

      X+

      X,一次或多次

      X{n}

      X,恰好 n

      X{n,}

      X,至少 n

      X{n,m}

      X,至少 n 次,但是不超過 m

        四、方法摘要

      static Pattern

      compile(String regex) 將給定的正則表達式編譯到模式中。

      static Pattern

      compile(String regex, int flags) 將給定的正則表達式編譯到具有給定標志的模式中。

      int

      flags() 返回此模式的匹配標志。

      Matcher

      matcher(CharSequence input) 創建匹配給定輸入與此模式的匹配器。

      static boolean

      matches(String regex, CharSequence input) 編譯給定正則表達式并嘗試將給定輸入與其匹配。

      String

      pattern() 返回在其中編譯過此模式的正則表達式。

      static String

      quote(String s) 返回指定 String 的字面值模式 String。

      String[]

      split(CharSequence input) 圍繞此模式的匹配拆分給定輸入序列。

      String[]

      split(CharSequence input, int limit) 圍繞此模式的匹配拆分給定輸入序列。

      String

      toString() 返回此模式的字符串表示形式。

        五、案例

        1、匹配案例

        1)電話號碼匹配案例

        public static void checkTel()

        {

        String tel = "16900001111";

        String telReg = "1[358]\\d{9}";

        System.out.println(tel.matches(telReg));

        }

        2)數字和字母組成的字符串匹配

        public static void demo()

        {

        String str = "b23a23456789";

        String reg = "[a-zA-Z]\\d*";

        boolean b= str.matches(reg);

        System.out.println(b);

        }

        3)QQ號碼匹配

        要求:5~15 0不能開頭,只能是數字

        public static void checkQQ()

        {

        String qq = "123a454";

        String regex = "[1-9]\\d{4,14}";

        boolean flag = qq.matches(regex);

        if(flag)

        System.out.println(qq+"...is ok");

        else

        System.out.println(qq+"... 不合法");

        }

        2、切割案例

        按照.進行切割:splitDemo("zhangsan.lisi.wangwu","\\.");

        按照\\進行切割:splitDemo("c:\\abc\\a.txt","\\\\");

        按照多個空格來進行切割:String reg = " +";空格+

        按照疊詞切割:splitDemo("erkktyqqquizzzzzo","(.)\\1+");//按照疊詞完成切割。為了可以讓規則的結果被重用,可以將規則封裝成一個組。用()完成。組的出現都有編號。從1開始。 想要使用已有的組可以通過 \n(n就是組的編號)的形式來獲取。

        3、替換案例

        將字符串中的數組替換成#。

        String str = "wer1389980000ty1234564uiod234345675f";

        replaceAllDemo(str,"\\d{5,}","#");

        將重疊的字符替換成單個字母。zzzz->z

        String str1 = "erkktyqqquizzzzzo";//

        replaceAllDemo(str1,"(.)\\1+","$1");

        4、獲取案例

        獲取:將字符串中的符合規則的子串取出。

        public static void getDemo()

        {

        String str = "ming tian jiu yao fang jia le ,da jia。";

        System.out.println(str);

        String reg = "\\b[a-z]{4}\\b";

        //將規則封裝成對象。

        Pattern p = Pattern.compile(reg);

        //讓正則對象和要作用的字符串相關聯。獲取匹配器對象。

        Matcher m = p.matcher(str);

        //將規則作用到字符串上,并進行符合規則的子串循環查找。

        while(m.find())

        {

        //用于獲取匹配后結果。

        System.out.println(m.group());

        System.out.println(m.start()+"...."+m.end());

        }

        }

      【java中正則表達式概述】相關文章:

      JAVA正則表達式語法大全03-29

      Java中的動態代碼編程03-05

      在Java中執行JavaScript代碼04-01

      java程序中如何調用linux命令03-29

      Java中類的設計技巧有哪些03-04

      Oracle正則表達式匯集03-28

      JAVA和.NET開發過程中的區別04-27

      java中continue跳轉語句使用方法03-29

      java中File類有哪些使用方法03-14

      主站蜘蛛池模板: 国产久热精品热线av| 日韩欧美亚洲国产一区二区三区| 中文字幕亚洲综合久久| 国产成人一区二区三区久久精品| 青青草国产成人在线视频| 粗大挺进尤物人妻一区二区| 国产麻豆放荡av激情演绎| 北票市| 超碰观看| 少妇被日到高潮的视频| 日本肥老熟妇在线观看| 91丝袜美腿高跟国产老师在线| 在线一区二区三区观看视频| 长子县| 阿拉善盟| 聊城市| 屏山县| 中西区| 亚洲精品中文字幕一区二区三区| 一区二区三区中文字幕有码| 亚洲国产福利成人一区二区| 国产乱子伦视频一区二区三区| 日本嗯啊在线观看| 国产AV无码专区亚洲AWWW| 日韩在线精品观看视频| 国产精品美女黑丝流水| 亚洲国产精品久久久久婷婷软件| 国产麻豆精品久久一二三| 成人永久福利在线观看不卡| 中文字幕日韩精品人妻在线| 中文字幕无码免费久久| 国产一区二区三区亚洲精品| 少妇被爽到自拍高潮在线观看| av免费看网站在线观看| 国产香蕉一区二区三区| 国产午夜亚洲精品一级在线| 加勒比亚洲视频在线播放| 亚洲成a人片在线观看中| 男女日比免费观看视频| 日本a级护士潮喷一区| 国产一级片内射在线视频|