国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JAVA中正則表達(dá)式

這篇具有很好參考價(jià)值的文章主要介紹了JAVA中正則表達(dá)式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

接下來(lái),學(xué)習(xí)一個(gè)全新的知識(shí),叫做正則表達(dá)式。正則表達(dá)式其實(shí)是由一些特殊的符號(hào)組成的,它代表的是某種規(guī)則。

正則表達(dá)式的作用1:用來(lái)校驗(yàn)字符串?dāng)?shù)據(jù)是否合法

正則表達(dá)式的作用2:可以從一段文本中查找滿足要求的內(nèi)容

5.1 正則表達(dá)式初體驗(yàn)

現(xiàn)在,我們就以QQ號(hào)碼為例,來(lái)體驗(yàn)一下正則表達(dá)式的用法。注意:現(xiàn)在僅僅只是體驗(yàn)而已,我們還沒(méi)有講正則表達(dá)式的具體寫(xiě)法。

  • 不使用正則表達(dá)式,校驗(yàn)QQ號(hào)碼代碼是這樣的
public static boolean checkQQ(String qq){
        // 1、判斷qq號(hào)碼是否為null
        if(qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20){
            return false;
        }

        // 2、qq至少是不是null,不是以0開(kāi)頭的,滿足6-20之間的長(zhǎng)度。
        // 判斷qq號(hào)碼中是否都是數(shù)字。
        // qq = 2514ghd234
        for (int i = 0; i < qq.length(); i++) {
            // 根據(jù)索引提取當(dāng)前位置處的字符。
            char ch = qq.charAt(i);
            // 判斷ch記住的字符,如果不是數(shù)字,qq號(hào)碼不合法。
            if(ch < '0' || ch > '9'){
                return false;
            }
        }
        // 3、說(shuō)明qq號(hào)碼肯定是合法
        return true;
    }
  • 用正則表達(dá)式代碼是這樣的
public static boolean checkQQ1(String qq){
    return qq != null && qq.matches("[1-9]\\d{5,19}");
}

我們發(fā)現(xiàn),使用正則表達(dá)式,大大簡(jiǎn)化的了代碼的寫(xiě)法。這個(gè)代碼現(xiàn)在不用寫(xiě),體驗(yàn)到正則表達(dá)式的優(yōu)勢(shì)就可以了。

5.2 正則表達(dá)式書(shū)寫(xiě)規(guī)則

前面我們已經(jīng)體驗(yàn)到了正則表達(dá)式,可以簡(jiǎn)化校驗(yàn)數(shù)據(jù)的代碼書(shū)寫(xiě)。這里需要用到一個(gè)方法叫matches(String regex)。這個(gè)方法時(shí)屬于String類(lèi)的方法。

JAVA中正則表達(dá)式,java,正則表達(dá)式,mysql
這個(gè)方法是用來(lái)匹配一個(gè)字符串是否匹配正則表達(dá)式的規(guī)則,參數(shù)需要調(diào)用者傳遞一個(gè)正則表達(dá)式。但是正則表達(dá)式不能亂寫(xiě),是有特定的規(guī)則的。

下面我們就學(xué)習(xí)一下,正則表達(dá)式的規(guī)則。從哪里學(xué)呢?在API中有一個(gè)類(lèi)叫做Pattern,我們可以到API文檔中搜索,關(guān)于正則表達(dá)式的規(guī)則,這個(gè)類(lèi)都告訴我們了。我這里把常用的已經(jīng)給大家整理好了。

JAVA中正則表達(dá)式,java,正則表達(dá)式,mysql
我們將這些規(guī)則,在代碼中演示一下

/**
 * 目標(biāo):掌握正則表達(dá)式的書(shū)寫(xiě)規(guī)則
 */
public class RegexTest2 {
    public static void main(String[] args) {
        // 1、字符類(lèi)(只能匹配單個(gè)字符)
        System.out.println("a".matches("[abc]"));    // [abc]只能匹配a、b、c
        System.out.println("e".matches("[abcd]")); // false

        System.out.println("d".matches("[^abc]"));   // [^abc] 不能是abc
        System.out.println("a".matches("[^abc]"));  // false

        System.out.println("b".matches("[a-zA-Z]")); // [a-zA-Z] 只能是a-z A-Z的字符
        System.out.println("2".matches("[a-zA-Z]")); // false

        System.out.println("k".matches("[a-z&&[^bc]]")); // : a到z,除了b和c
        System.out.println("b".matches("[a-z&&[^bc]]")); // false

        System.out.println("ab".matches("[a-zA-Z0-9]")); // false 注意:以上帶 [內(nèi)容] 的規(guī)則都只能用于匹配單個(gè)字符

        // 2、預(yù)定義字符(只能匹配單個(gè)字符)  .  \d  \D   \s  \S  \w  \W
        System.out.println("徐".matches(".")); // .可以匹配任意字符
        System.out.println("徐徐".matches(".")); // false

        // \轉(zhuǎn)義
        System.out.println("\"");
        // \n \t
        System.out.println("3".matches("\\d"));  // \d: 0-9
        System.out.println("a".matches("\\d"));  //false

        System.out.println(" ".matches("\\s"));   // \s: 代表一個(gè)空白字符
        System.out.println("a".matches("\s")); // false

        System.out.println("a".matches("\\S"));  // \S: 代表一個(gè)非空白字符
        System.out.println(" ".matches("\\S")); // false

        System.out.println("a".matches("\\w"));  // \w: [a-zA-Z_0-9]
        System.out.println("_".matches("\\w")); // true
        System.out.println("徐".matches("\\w")); // false

        System.out.println("徐".matches("\\W"));  // [^\w]不能是a-zA-Z_0-9
        System.out.println("a".matches("\\W"));  // false

        System.out.println("23232".matches("\\d")); // false 注意:以上預(yù)定義字符都只能匹配單個(gè)字符。

        // 3、數(shù)量詞: ?   *   +   {n}   {n, }  {n, m}
        System.out.println("a".matches("\\w?"));   // ? 代表0次或1次
        System.out.println("".matches("\\w?"));    // true
        System.out.println("abc".matches("\\w?")); // false

        System.out.println("abc12".matches("\\w*"));   // * 代表0次或多次
        System.out.println("".matches("\\w*"));        // true
        System.out.println("abc12張".matches("\\w*")); // false

        System.out.println("abc12".matches("\\w+"));   // + 代表1次或多次
        System.out.println("".matches("\\w+"));       // false
        System.out.println("abc12張".matches("\\w+")); // false

        System.out.println("a3c".matches("\\w{3}"));   // {3} 代表要正好是n次
        System.out.println("abcd".matches("\\w{3}"));  // false
        System.out.println("abcd".matches("\\w{3,}"));     // {3,} 代表是>=3次
        System.out.println("ab".matches("\\w{3,}"));     // false
        System.out.println("abcde徐".matches("\\w{3,}"));     // false
        System.out.println("abc232d".matches("\\w{3,9}"));     // {3, 9} 代表是  大于等于3次,小于等于9次

        // 4、其他幾個(gè)常用的符號(hào):(?i)忽略大小寫(xiě) 、 或:| 、  分組:()
        System.out.println("abc".matches("(?i)abc")); // true
        System.out.println("ABC".matches("(?i)abc")); // true
        System.out.println("aBc".matches("a((?i)b)c")); // true
        System.out.println("ABc".matches("a((?i)b)c")); // false

        // 需求1:要求要么是3個(gè)小寫(xiě)字母,要么是3個(gè)數(shù)字。
        System.out.println("abc".matches("[a-z]{3}|\\d{3}")); // true
        System.out.println("ABC".matches("[a-z]{3}|\\d{3}")); // false
        System.out.println("123".matches("[a-z]{3}|\\d{3}")); // true
        System.out.println("A12".matches("[a-z]{3}|\\d{3}")); // false

        // 需求2:必須是”我愛(ài)“開(kāi)頭,中間可以是至少一個(gè)”編程“,最后至少是1個(gè)”666“
        System.out.println("我愛(ài)編程編程666666".matches("我愛(ài)(編程)+(666)+"));
        System.out.println("我愛(ài)編程編程66666".matches("我愛(ài)(編程)+(666)+"));
    }
}

5.3 正則表達(dá)式應(yīng)用案例

學(xué)習(xí)完正則表達(dá)式的規(guī)則之后,接下來(lái)我們?cè)倮谜齽t表達(dá)式,去校驗(yàn)幾個(gè)實(shí)際案例。

  • 正則表達(dá)式校驗(yàn)手機(jī)號(hào)碼

/**
 * 目標(biāo):校驗(yàn)用戶輸入的電話、郵箱、時(shí)間是否合法。
 */
public class RegexTest3 {
    public static void main(String[] args) {
        checkPhone();
    }

    public static void checkPhone(){
        while (true) {
            System.out.println("請(qǐng)您輸入您的電話號(hào)碼(手機(jī)|座機(jī)): ");
            Scanner sc = new Scanner(System.in);
            String phone = sc.nextLine();
            // 18676769999  010-3424242424 0104644535
            if(phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19})")){
                System.out.println("您輸入的號(hào)碼格式正確~~~");
                break;
            }else {
                System.out.println("您輸入的號(hào)碼格式不正確~~~");
            }
        }
    }
}
  • 使用正則表達(dá)式校驗(yàn)郵箱是否正確
public class RegexTest3 {
    public static void main(String[] args) {
        checkEmail();
    }

    public static void checkEmail(){
        while (true) {
            System.out.println("請(qǐng)您輸入您的郵箱: ");
            Scanner sc = new Scanner(System.in);
            String email = sc.nextLine();
            /**
             * dlei0009@163.com
             * 25143242@qq.com
             * itheima@itcast.com.cn
             */
            if(email.matches("\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2}")){
                System.out.println("您輸入的郵箱格式正確~~~");
                break;
            }else {
                System.out.println("您輸入的郵箱格式不正確~~~");
            }
        }
    }
}

5.4 正則表達(dá)式信息爬取

各位小伙伴,在前面的課程中,我們學(xué)習(xí)了正則表達(dá)式的作用之一,用來(lái)校驗(yàn)數(shù)據(jù)格式的正確性。接下來(lái)我們學(xué)習(xí)正則表達(dá)式的第二個(gè)作用:在一段文本中查找滿足要求的內(nèi)容

我們還是通過(guò)一個(gè)案例給大家做演示:案例需求如下

/**
 * 目標(biāo):掌握使用正則表達(dá)式查找內(nèi)容。
 */
public class RegexTest4 {
    public static void main(String[] args) {
        method1();
    }

    // 需求1:從以下內(nèi)容中爬取出,手機(jī),郵箱,座機(jī)、400電話等信息。
    public static void method1(){
        String data = " 來(lái)黑馬程序員學(xué)習(xí)Java,\n" +
                "        電話:1866668888,18699997777\n" +
                "        或者聯(lián)系郵箱:boniu@itcast.cn,\n" +
                "        座機(jī)電話:01036517895,010-98951256\n" +
                "        郵箱:bozai@itcast.cn,\n" +
                "        郵箱:dlei0009@163.com,\n" +
                "        熱線電話:400-618-9090 ,400-618-4000,4006184000,4006189090";
        // 1、定義爬取規(guī)則
        String regex = "(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19})|(\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2})"
                + "|(400-?\\d{3,7}-?\\d{3,7})";
        // 2、把正則表達(dá)式封裝成一個(gè)Pattern對(duì)象
        Pattern pattern = Pattern.compile(regex);
        // 3、通過(guò)pattern對(duì)象去獲取查找內(nèi)容的匹配器對(duì)象。
        Matcher matcher = pattern.matcher(data);
        // 4、定義一個(gè)循環(huán)開(kāi)始爬取信息
        while (matcher.find()){
            String rs = matcher.group(); // 獲取到了找到的內(nèi)容了。
            System.out.println(rs);
        }
    }
}

5.5 正則表達(dá)式搜索、替換

接下來(lái),我們學(xué)習(xí)一下正則表達(dá)式的另外兩個(gè)功能,替換、分割的功能。需要注意的是這幾個(gè)功能需要用到Stirng類(lèi)中的方法。這兩個(gè)方法其實(shí)我們之前學(xué)過(guò),只是當(dāng)時(shí)沒(méi)有學(xué)正則表達(dá)式而已。

JAVA中正則表達(dá)式,java,正則表達(dá)式,mysql
/**文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-808117.html

  • 目標(biāo):掌握使用正則表達(dá)式做搜索替換,內(nèi)容分割。
    */
public class RegexTest5 {
    public static void main(String[] args) {
        // 1、public String replaceAll(String regex , String newStr):按照正則表達(dá)式匹配的內(nèi)容進(jìn)行替換
        // 需求1:請(qǐng)把下面字符串中的不是漢字的部分替換為 “-”
        String s1 = "古力娜扎ai8888迪麗熱巴999aa5566馬爾扎哈fbbfsfs42425卡爾扎巴";
        System.out.println(s1.replaceAll("\\w+", "-"));
        
        // 需求2(拓展):某語(yǔ)音系統(tǒng),收到一個(gè)口吃的人說(shuō)的“我我我喜歡編編編編編編編編編編編編程程程!”,需要優(yōu)化成“我喜歡編程!”。
        String s2 = "我我我喜歡編編編編編編編編編編編編程程程";
        System.out.println(s2.replaceAll("(.)\\1+", "$1"));

        // 2、public String[] split(String regex):按照正則表達(dá)式匹配的內(nèi)容進(jìn)行分割字符串,反回一個(gè)字符串?dāng)?shù)組。
        // 需求1:請(qǐng)把下面字符串中的人名取出來(lái),使用切割來(lái)做
        String s3 = "古力娜扎ai8888迪麗熱巴999aa5566馬爾扎哈fbbfsfs42425卡爾扎巴";
        String[] names = s3.split("\\w+");
        System.out.println(Arrays.toString(names));
    }
}

到了這里,關(guān)于JAVA中正則表達(dá)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 正則表達(dá)式(Java)

    正則表達(dá)式(Java)

    正則表達(dá)式是由一些特定的字符組成,代表一個(gè)規(guī)則,可以用來(lái)檢驗(yàn)數(shù)據(jù)格式是否合法,也可以在一段文本中查找滿足要求的內(nèi)容。 如果使用代碼檢驗(yàn)數(shù)據(jù)是否正確: 使用正則表達(dá)式: String提供了一個(gè)匹配正則表達(dá)式的方法:? 圖片來(lái)源heimait \\\\d才會(huì)當(dāng)成d使用 (?i)表示忽略大

    2024年02月20日
    瀏覽(25)
  • JAVA中正則表達(dá)式

    JAVA中正則表達(dá)式

    接下來(lái),學(xué)習(xí)一個(gè)全新的知識(shí),叫做正則表達(dá)式。 正則表達(dá)式其實(shí)是由一些特殊的符號(hào)組成的,它代表的是某種規(guī)則。 正則表達(dá)式的作用1:用來(lái)校驗(yàn)字符串?dāng)?shù)據(jù)是否合法 正則表達(dá)式的作用2:可以從一段文本中查找滿足要求的內(nèi)容 5.1 正則表達(dá)式初體驗(yàn) 現(xiàn)在,我們就以QQ號(hào)碼

    2024年01月20日
    瀏覽(23)
  • Java 正則表達(dá)式匹配

    正則表達(dá)式: 定義一個(gè)搜索模式的字符串。 正則表達(dá)式可以用于搜索、編輯和操作文本。 正則對(duì)文本的分析或修改過(guò)程為:首先正則表達(dá)式應(yīng)用的是文本字符串(text/string),它會(huì)以定義的模式從左到右匹配文本,每個(gè)源字符只匹配一次。 正則表達(dá)式 匹配 this is text 精確匹配

    2024年02月06日
    瀏覽(29)
  • Java的正則表達(dá)式

    正則表達(dá)式是一種強(qiáng)大的字符串匹配工具,可以在很多領(lǐng)域得到廣泛使用。在Java中,正則表達(dá)式也被廣泛應(yīng)用于字符串匹配、查找和替換等方面。本文將介紹Java中常用的正則表達(dá)式語(yǔ)法以及其使用方法,供大家參考。 Java中使用正則表達(dá)式需要使用java.util.regex包中的類(lèi)。其中

    2024年02月07日
    瀏覽(24)
  • Java038——正則表達(dá)式

    正則表達(dá)式通常被用于判斷語(yǔ)句中,用來(lái)檢查某一字符串是否滿足某一格式。正則表達(dá)式是含有一些具有特殊意義字符的字符串,這些特殊字符稱(chēng)為正則表達(dá)式的元字符。例如,“d”表示數(shù)字 0~9 中的任何一個(gè),“d”就是元字符。正則表達(dá)式中的元字符及其意義下所示。 在

    2024年02月13日
    瀏覽(27)
  • JAVA系列---正則表達(dá)式

    編號(hào) 元字符 匹配功能 1 . 匹配除換?符以外的任意字符 2 w 匹配字?或數(shù)字或下劃線 3 s 匹配任意的空?符 4 d 匹配數(shù)字 5 n 匹配?個(gè)換?符 6 t 匹配?個(gè)制表符 7 ^ 匹配字符串的開(kāi)始 8 $ 匹配字符串的結(jié)尾 9 W 匹配?字?或數(shù)字或下劃線 10 D 匹配?數(shù)字 11 S 匹配?空?符

    2024年02月15日
    瀏覽(38)
  • 【Java 基礎(chǔ)篇】Java 正則表達(dá)式

    正則表達(dá)式是一種強(qiáng)大的文本模式匹配工具,它可以幫助我們?cè)谖谋局胁檎摇⑻鎿Q和提取特定模式的內(nèi)容。Java 提供了豐富的正則表達(dá)式支持,通過(guò) java.util.regex 包中的類(lèi)和方法,我們可以在 Java 程序中使用正則表達(dá)式進(jìn)行字符串處理。 本篇博客將介紹 Java 正則表達(dá)式的基本

    2024年02月09日
    瀏覽(32)
  • Java 正則表達(dá)式【基本語(yǔ)法】

    首先我們需要了解的是正則表達(dá)式中的各種元字符的功能,主要分為以下幾種: 限定符 選擇匹配符 分組組合和反向引用符 特殊字符 字符匹配符 定位符 需要注意的是:在 Java正則表達(dá)式中,兩個(gè)斜杠 \\\\ 相當(dāng)于其它語(yǔ)言中的一個(gè)斜杠 。 符號(hào) 含義 示例 解釋 [ ] 可以匹配的字

    2024年02月13日
    瀏覽(15)
  • Java 正則表達(dá)式數(shù)字篇

    如果需要根據(jù)特定的規(guī)則來(lái)表示一組字符串,則用正則表達(dá)式。正則表達(dá)式可以用字符串來(lái)描述規(guī)則,并用來(lái)匹配字符串 Java 提供了標(biāo)準(zhǔn)庫(kù) java.util.regex ,可以很方便的使用正則表達(dá)式。 如果正則表達(dá)式有特殊字符,那就需要用 轉(zhuǎn)義,后續(xù)會(huì)提到。 用 d 可以匹配一位數(shù)字

    2024年02月05日
    瀏覽(20)
  • JAVA Android 正則表達(dá)式

    JAVA Android 正則表達(dá)式

    正則表達(dá)式是對(duì)字符串執(zhí)行模式匹配的技術(shù)。 如果要想靈活的運(yùn)用正則表達(dá)式,必須了解其中各種元字符的功能,元字符從功能上大致分為: 1、限定符 2、選擇匹配符 3、分組組合和反向引用符 4、特殊字符 5、字符匹配符 6、定位符 元字符(Metacharacter)-轉(zhuǎn)義號(hào) \\\\ 符號(hào)說(shuō)明: 在我

    2024年02月13日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包