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

      JDK的正則表達

      時間:2024-06-05 20:19:24 SUN認證 我要投稿
      • 相關推薦

      JDK的正則表達

        jdk是 Java 語言的軟件開發工具包,主要用于移動設備、嵌入式設備上的java應用程序。下面小編為大家整理了關于JDK的正則表達,一起來看看吧:

        一、概述

        正則表達式是Java處理字符串、文本的重要工具。

        Java對正則表達式的處理集中在以下兩個兩個類:

        java.util.regex.Matcher 模式類:用來表示一個編譯過的正則表達式。

        java.util.regex.Pattern 匹配類:用模式匹配一個字符串所表達的抽象結果。

        (新版的Java Doc有解釋。)

        比如一個簡單例子:

        Java代碼

        import java.util.regex.Matcher;

        import java.util.regex.Pattern;

        public class RegxOperator {

        /**

        * @param args

        */

        public static void main(String[] args) {

        // TODO Auto-generated method stub

        Pattern p = Pattern.compile("f(.+?)k");

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

        while (m.find()) {

        String s0 = m.group();

        String s1 = m.group(1);

        System.out.println(s0 + "||" + s1);

        }

        System.out.println("---------");

        m.reset("fucking!");

        while (m.find()) {

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

        }

        Pattern p1 = Pattern.compile("f(.+?)i(.+?)h");

        Matcher m1 = p1.matcher("finishabigfishfrish");

        while (m1.find()) {

        String s0 = m1.group();

        String s1 = m1.group(1);

        String s2 = m1.group(2);

        System.out.println(s0 + "||" + s1 + "||" + s2);

        }

        System.out.println("---------");

        Pattern p3 = Pattern

        .compile("(19|20)\\d\\d([- /.])(0[1-9]|1[012])\\2(0[1-9]|[12][0-9]|3[01])");

        Matcher m3 = p3

        .matcher("1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31");

        while (m3.find()) {

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

        }

        }

        }

        輸出結果:

        fck||c

        fkk||k

        ---------

        fuck

        finish||in||s

        fishfrish||ishfr||s

        ---------

        1900-01-01

        2007/08/13

        1900.01.01

        1900 01 01

        1900 02 31

        Java代碼

        import java.util.regex.Matcher;

        import java.util.regex.Pattern;

        public class Test {

        public static void main(String args[]) {

        String rawDate = "1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31";

        String patternStr = "(\\d{4})[- /.](\\d{2})[- /.](\\d{2})";

        Pattern pattern = Pattern.compile(patternStr);

        Matcher matcher = pattern.matcher(rawDate);

        while(matcher.find()){

        System.out.println("full date is " + matcher.group());

        System.out.println("year is " + matcher.group(1));

        System.out.println("month is " + matcher.group(2));

        System.out.println("date is " + matcher.group(3));

        }

        }

        }

        full date is 1900-01-01

        year is 1900

        month is 01

        date is 01

        full date is 2007/08/13

        year is 2007

        month is 08

        date is 13

        full date is 1900.01.01

        year is 1900

        month is 01

        date is 01

        full date is 1900 01 01

        year is 1900

        month is 01

        date is 01

        full date is 1900-01.01

        year is 1900

        month is 01

        date is 01

        full date is 1900 13 01

        year is 1900

        month is 13

        date is 01

        full date is 1900 02 31

        year is 1900

        month is 02

        date is 31

        二、一些容易迷糊的問題

        1、Java對反斜線處理的問題

        在其他語言中,\\表示要插入一個字符\;

        在Java語言中,\\表示要插入正則表達式的反斜線,并且后面的字符有特殊意義。

        看API文檔:

        預定義字符類

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

        \d 數字:[0-9]

        \D 非數字: [^0-9]

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

        \S 非空白字符:[^\s]

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

        \W 非單詞字符:[^\w]

        但是看看上面程序,對比下不難看出:

        \d在實際使用的時候就寫成了 \\d;

        在Java正則表達式中,如果要插入一個\字符,則需要在正則表達式中寫成\\\\,原因是下面的APIDoc定義\\表示一個反斜線。

        但是如果在正則表示式中表示回車換行等,則不需要多添加反斜線了。比如回車\r就寫作\r.

        字符

        x 字符 x

        \\ 反斜線字符

        \0n 帶有八進制值 0 的字符 n (0 <= n <= 7)

        \0nn 帶有八進制值 0 的字符 nn (0 <= n <= 7)

        \0mnn 帶有八進制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)

        \xhh 帶有十六進制值 0x 的字符 hh

        \uhhhh 帶有十六進制值 0x 的字符 hhhh

        \t 制表符 ('\u0009')

        \n 新行(換行)符 ('\u000A')

        \r 回車符 ('\u000D')

        \f 換頁符 ('\u000C')

        \a 報警 (bell) 符 ('\u0007')

        \e 轉義符 ('\u001B')

        \cx 對應于 x 的控制符

        2、Matcher.find():嘗試查找與模式匹配的字符序列的下一個子序列。此方法從字符序列的開頭開始,如果該方法的前一次調用成功了并且從那時開始匹配器沒有被重置,則從以前匹配操作沒有匹配的第一個字符開始,即如果前一次找到與模式匹配的子序列則這次從這個子序列后開始查找。

        3、Matcher.matchers():判斷整個字符序列與模式是否匹配。當連續用Matcher對象檢查多個字符串時候,可以使用

        Matcher.reset():重置匹配器,放棄其所有顯式狀態信息并將其添加位置設置為零。

        或者Matcher.reset(CharSequence input) 重置此具有新輸入序列的匹配器。

        來重復使用匹配器。

        4、組的概念,這個概念很重要,組是用括號劃分的正則表達式,可以通過編號來引用組。組號從0開始,有幾對小括號就表示有幾個組,并且組可以嵌套,組號為0的表示整個表達式,組號為1的表示第一個組,依此類推。

        例如:A(B)C(D)E正則式中有三組,組0是ABCDE,組1是B,組2是D;

        A((B)C)(D)E正則式中有四組:組0是ABCDE,組1是BC,組2是B;組3是C,組4是D。

        int groupCount():返回匹配其模式中組的數目,不包括第0組。

        String group():返回前一次匹配操作(如find())的第0組。

        String group(int group):返回前一次匹配操作期間指定的組所匹配的子序列。如果該匹配成功,但指定組未能匹配字符序列的任何部分,則返回 null。

        int start(int group):返回前一次匹配操作期間指定的組所匹配的子序列的初始索引。

        int end(int group):返回前一次匹配操作期間指定的組所匹配的子序列的最后索引+1。

        5、匹配的范圍的控制

        最變態的就要算lookingAt()方法了,名字很讓人迷惑,需要認真看APIDoc。

        start() 返回以前匹配的初始索引。

        end() 返回最后匹配字符之后的偏移量。

        public boolean lookingAt()嘗試將從區域開頭開始的輸入序列與該模式匹配。

        與 matches 方法類似,此方法始終從區域的開頭開始;與之不同的是,它不需要匹配整個區域。

        如果匹配成功,則可以通過 start、end 和 group 方法獲取更多信息。

        返回:

        當且僅當輸入序列的前綴匹配此匹配器的模式時才返回 true。

        6、Pattern標記

        Pattern類的靜態方法

        static Pattern compile(String regex, int flags)

        將給定的正則表達式編譯到具有給定標志的模式中。

        其中的flags參數就是Pattern標記,這個標記在某些時候非常重要。

        Pattern.CANON_EQ

        啟用規范等價。

        Pattern.CASE_INSENSITIVE

        啟用不區分大小寫的匹配。

        Pattern.COMMENTS

        模式中允許空白和注釋。

        Pattern.DOTALL

        啟用 dotall 模式。

        Pattern.LITERAL

        啟用模式的字面值分析。

        Pattern.MULTILINE

        啟用多行模式。

        Pattern.UNICODE_CASE

        啟用 Unicode 感知的大小寫折疊。

        Pattern.UNIX_LINES

        啟用 Unix 行模式。

        三、字符串的替換

        String.replace(char oldChar, char newChar)

        返回一個新的字符串,它是通過用 newChar 替換此字符串中出現的所有 oldChar 而生成的。

        String.replace(CharSequence target, CharSequence replacement)

        使用指定的字面值替換序列替換此字符串匹配字面值目標序列的每個子字符串。

        String.replaceAll(String regex, String replacement)

        使用給定的 replacement 字符串替換此字符串匹配給定的正則表達式的每個子字符串。

        String.replaceFirst(String regex, String replacement)

        使用給定的 replacement 字符串替換此字符串匹配給定的正則表達式的第一個子字符串。

        StringBuffer.replace(int start, int end, String str)

        使用給定 String 中的字符替換此序列的子字符串中的字符。

        StringBuilder.replace(int, int, java.lang.String)

        使用給定 String 中的字符替換此序列的子字符串中的字符。

        Matcher.replaceAll(String replacement)

        替換模式與給定替換字符串相匹配的輸入序列的每個子序列。

        Matcher.replaceFirst(String replacement)

        替換模式與給定替換字符串匹配的輸入序列的第一個子序列。

        四、字符串的切分

        String[] split(String regex)

        根據給定的正則表達式的匹配來拆分此字符串。

        String[] split(String regex, int limit)

        根據匹配給定的正則表達式來拆分此字符串。

        當然,還有一個StringTokenizer類,可以用來切分字符串,但是現在SUN已經不推薦使用了。

        轉變下思路,其實用正則表達式也可以達到將字符串切分為段的目的。

      【JDK的正則表達】相關文章:

      SQL語句中的正則表達示07-28

      javascript正則表達式06-10

      PHP 正則表達式總結10-05

      Oracle正則表達式匯集09-21

      JAVA正則表達式語法大全06-12

      java中正則表達式概述08-22

      Linux中正則表達式與文件處理07-20

      JavaScript基于正則表達式數字判斷函數06-14

      PHP 正則表達式后面接的/isU, /is, /s參數含義詳解10-12

      關于php正則之函數 preg-replace()參數說明11-05

      主站蜘蛛池模板: 午夜人妻中文字幕福利| 日本女优中文字幕在线一区| 亚洲专区中文在线第一页| 日韩人妻无码中文字幕一区| 亚洲一区二区三区色婷婷| 国产精品亚洲ΑV天堂无码| 亚洲精品中文字幕一区二区三区| 久久久免费精品人妻一区二区三区| 久久久精品2019免费观看| 在线观看黄片在线播放视频| 金坛市| 国产精品一区二区午夜久久| 美腿丝袜美腿国产在线| 亚洲精品高清av在线播放| 久久99老妇伦国产熟女高清| 久久亚洲国产精品三级黄片免费| 国内精品视频成人一区二区| 97色综合| 欧美日韩一二三区高在线| 91精品一区二区三区蜜桃| 久久久久综合一本久道| 龙川县| 如何看色黄视频中文字幕| 乱人伦人妻中文字幕不卡| 亚洲一区二区三区最新| 日本一区二区三区最新不卡视频| 日韩在线精品观看视频| 蜜芽尤物原创AV在线播放| 免费大学生国产在线观看p | 无码国产日韩精品一区二区| 精品久久久中文字幕一区| 国内少妇高潮嗷嗷叫在线观看| 无码a级毛片免费视频内谢| 岛国视频在线无码| 精品一区二区三区久久久| 一区二区三区婷婷中文字幕| 精品无码成人片一区二区| 日韩中文字幕在线一区| 女同在线观看免费网站| 一本色道久久综合亚洲精品不卡| 亚洲精品无人区一区二区三区|