最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java正則表達(dá)式詳解及實(shí)用案例(附詳細(xì)代碼)

 更新時(shí)間:2024年11月23日 10:02:09   作者:高錳酸鉀_  
正則表達(dá)式是一種強(qiáng)大的字符串處理工具,用于匹配和解析文本,這篇文章主要給大家介紹了關(guān)于Java正則表達(dá)式詳解及實(shí)用案例的相關(guān)資料,本文通過代碼示例講解了正則表達(dá)式的基本語法規(guī)則,包括字符類、預(yù)定義字符類和數(shù)量詞,需要的朋友可以參考下

前言

正則表達(dá)式是一種強(qiáng)大的工具,用于處理字符串匹配和文本解析。在這篇博客中,我們將通過代碼示例,詳細(xì)講解正則表達(dá)式的基本語法規(guī)則以及在Java中的實(shí)際應(yīng)用

什么是正則表達(dá)式?

正則表達(dá)式(Regular Expression)是一種用來描述字符模式的規(guī)則。它可以用來驗(yàn)證字符串是否符合規(guī)則,或者從一段文本中提取特定的子字符串

正則表達(dá)式的典型應(yīng)用:

  • 字符串校驗(yàn)(如校驗(yàn)手機(jī)號(hào)碼、郵箱地址等)
  • 文本搜索與替換
  • 數(shù)據(jù)解析

Java 正則表達(dá)式的基本用法

在Java中,PatternMatcher類是處理正則表達(dá)式的核心。以下是幾個(gè)關(guān)鍵概念和用法:

(1) 字符類

字符類用來匹配特定范圍內(nèi)的字符。以下是常見的字符類:

表達(dá)式描述
[abc]匹配 a、b 或 c
[^abc]匹配除 a、b 和 c 以外的字符
[a-zA-Z]匹配任意大小寫英文字母
[a-d[m-p]]匹配 a-d 或 m-p 范圍內(nèi)的字符
[a-z&&[^bc]]匹配 a-z 中除了 b 和 c 的字符

代碼示例:

System.out.println("a".matches("[abc]")); // true
System.out.println("z".matches("[abc]")); // false
System.out.println("bc".matches("[abc][abc]")); // true

(2) 預(yù)定義字符類

預(yù)定義字符類是字符類的簡化寫法,用來匹配常見的字符類型

表達(dá)式描述
.匹配任意字符
\d匹配數(shù)字,等價(jià)于 [0-9]
\D匹配非數(shù)字,等價(jià)于 [^0-9]
\s匹配空白字符
\S匹配非空白字符
\w匹配字母、數(shù)字、下劃線,等價(jià)于 [a-zA-Z0-9_]
\W匹配非字母、數(shù)字、下劃線

代碼示例:

System.out.println("123".matches("\\d+")); // true
System.out.println("@".matches("\\w"));    // false
System.out.println("abc_123".matches("\\w+")); // true

(3) 數(shù)量詞

數(shù)量詞用來指定字符出現(xiàn)的次數(shù)

表達(dá)式描述
X?匹配 X 0 次或 1 次
X*匹配 X 0 次或多次
X+匹配 X 1 次或多次
X{n}匹配 X 恰好出現(xiàn) n 次
X{n,}匹配 X 至少出現(xiàn) n 次
X{n,m}匹配 X 至少出現(xiàn) n 次但不超過 m 次

代碼示例:

System.out.println("123456789".matches("\\d{9}")); // true
System.out.println("123".matches("\\d{1,5}"));    // true

正則表達(dá)式實(shí)際應(yīng)用

(1) 校驗(yàn)規(guī)則

校驗(yàn)QQ號(hào)

規(guī)則:6-20位數(shù)字,不能以 0 開頭

String qq = "12345678987";
System.out.println(qq.matches("[1-9]\\d{5,19}")); // true

校驗(yàn)手機(jī)號(hào)碼

規(guī)則:以 1 開頭,第二位是 3-9,后面跟 9 位數(shù)字

String phone = "13933447894";
System.out.println(phone.matches("1[3-9]\\d{9}")); // true

校驗(yàn)郵箱地址

規(guī)則:用戶名部分允許字母、數(shù)字、下劃線,域名部分允許字母和數(shù)字,支持多級后綴

String email = "gaomengsuanjia@163.com";
System.out.println(email.matches("\\w+([-+.']\\w+)*@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,})+")); // true

校驗(yàn)座機(jī)號(hào)碼

規(guī)則:開頭以 0,后接 2-3 位區(qū)號(hào),支持帶或不帶連字符

String tel = "020-5698137";
System.out.println(tel.matches("0\\d{2,3}-?[1-9]\\d{4,9}")); // true

(2) 文本查找

利用 Pattern 和 Matcher 可以在大段文本中找到符合條件的子串

查找包含版本號(hào)的 Java 關(guān)鍵字

String text = "java8和java11是長期支持版本,下一個(gè)是java17。";
Pattern pattern = Pattern.compile("java\\d{0,2}");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    System.out.println(matcher.group());
}
// 輸出:java8、java11、java17

通過以上代碼示例和解釋,我們了解了正則表達(dá)式的基本規(guī)則及在Java中的應(yīng)用方式。正則表達(dá)式作為字符串處理的利器,可以極大提高開發(fā)效率。在實(shí)際項(xiàng)目中,我們可以利用正則表達(dá)式解決各種文本匹配和校驗(yàn)問題

最后,為了幫助大家復(fù)習(xí)正則表達(dá)式,可以玩一個(gè)小游戲

總結(jié) 

到此這篇關(guān)于Java正則表達(dá)式詳解及實(shí)用案例的文章就介紹到這了,更多相關(guān)Java正則表達(dá)式實(shí)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中解決跨域問題的方法匯總(建議收藏)

    Java中解決跨域問題的方法匯總(建議收藏)

    我們在開發(fā)過程中經(jīng)常會(huì)遇到前后端分離而導(dǎo)致的跨域問題,導(dǎo)致無法獲取返回結(jié)果,下面給大家介紹Java中解決跨域問題的方法匯總,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • SpringDataJPA實(shí)體類關(guān)系映射配置方式

    SpringDataJPA實(shí)體類關(guān)系映射配置方式

    這篇文章主要介紹了SpringDataJPA實(shí)體類關(guān)系映射配置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • IDEA創(chuàng)建Gradle項(xiàng)目然后刪除報(bào)錯(cuò)問題及解決

    IDEA創(chuàng)建Gradle項(xiàng)目然后刪除報(bào)錯(cuò)問題及解決

    這篇文章主要介紹了IDEA創(chuàng)建Gradle項(xiàng)目然后刪除報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java使用Apache Batik實(shí)現(xiàn)將SVG轉(zhuǎn)換為PNG

    Java使用Apache Batik實(shí)現(xiàn)將SVG轉(zhuǎn)換為PNG

    在項(xiàng)目中經(jīng)常需要將 SVG 圖標(biāo)或圖形轉(zhuǎn)換為 PNG 格式,Apache Batik 是一個(gè)強(qiáng)大的 SVG 處理庫,可以輕松實(shí)現(xiàn) SVG → PNG 的轉(zhuǎn)換,下面我們就來看看具體實(shí)現(xiàn)方法吧
    2026-01-01
  • 詳解SpringBoot統(tǒng)一響應(yīng)體解決方案

    詳解SpringBoot統(tǒng)一響應(yīng)體解決方案

    這篇文章主要介紹了詳解SpringBoot統(tǒng)一響應(yīng)體解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • SpringBoot集成jersey打包jar找不到class的處理方法

    SpringBoot集成jersey打包jar找不到class的處理方法

    這篇文章主要介紹了SpringBoot集成jersey打包jar找不到class的處理方法,文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • Spring Cloud Gateway內(nèi)置的斷言和過濾器作用說明

    Spring Cloud Gateway內(nèi)置的斷言和過濾器作用說明

    這篇文章主要介紹了Spring Cloud Gateway內(nèi)置的斷言和過濾器作用說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • SpringBoot下無節(jié)制和數(shù)據(jù)庫建立連接的問題及解決方法

    SpringBoot下無節(jié)制和數(shù)據(jù)庫建立連接的問題及解決方法

    本文介紹了無節(jié)制建立MySQL連接的危害,包括數(shù)據(jù)庫服務(wù)端資源耗盡、應(yīng)用端性能劣化和監(jiān)控與運(yùn)維困境,提出了系統(tǒng)性解決方案,包括連接池標(biāo)準(zhǔn)化配置、代碼規(guī)范與防御式編程、全鏈路監(jiān)控體系和架構(gòu)級優(yōu)化,感興趣的朋友一起看看吧
    2025-03-03
  • mybatis group by substr函數(shù)傳參報(bào)錯(cuò)的解決

    mybatis group by substr函數(shù)傳參報(bào)錯(cuò)的解決

    這篇文章主要介紹了mybatis group by substr函數(shù)傳參報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot應(yīng)用優(yōu)雅停機(jī)的3種標(biāo)準(zhǔn)方案

    SpringBoot應(yīng)用優(yōu)雅停機(jī)的3種標(biāo)準(zhǔn)方案

    所謂優(yōu)雅停機(jī)(Graceful Shutdown),就是讓應(yīng)用在關(guān)閉前停止接收新請求;把正在處理的請求執(zhí)行完;釋放線程池、連接池、MQ 消費(fèi)者等資源;最后再安全退出,今天講清楚 SpringBoot優(yōu)雅停機(jī)的3種標(biāo)準(zhǔn)方案,生產(chǎn)直接抄配置,需要的朋友可以參考下
    2026-03-03

最新評論

阳信县| 孝感市| 葫芦岛市| 石景山区| 吕梁市| 崇明县| 广丰县| 思南县| 石首市| 宜良县| 海阳市| 方正县| 城步| 巢湖市| 漠河县| 敦煌市| 永顺县| 汾西县| 九寨沟县| 阳山县| 乐昌市| 邵阳县| 湖北省| 疏附县| 汾阳市| 洛宁县| 肥东县| 蒲江县| 博兴县| 府谷县| 繁昌县| 盈江县| 汾西县| 九江县| 囊谦县| 宜章县| 河曲县| 天长市| 确山县| 汾阳市| 青冈县|