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

Java正則表達式超詳細講解(簡單易懂版)

 更新時間:2025年06月25日 08:54:58   作者:嗎嘍對你問好  
前段時間使用Java的正則表達式做一些字符串匹配的任務,現(xiàn)將學到的正則表達式的知識整理成文,這篇文章主要介紹了Java正則表達式的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

正則表達式是用來匹配和處理文本的強大工具。在Java中,主要通過 java.util.regex 包中的 Pattern 和 Matcher 類來實現(xiàn)。

一、基礎概念

1. 什么是正則表達式?

正則表達式(Regular Expression)是一種用來描述字符串模式的特殊語法,可以用來:

  • 檢查字符串是否符合某種格式

  • 從字符串中提取特定部分

  • 替換字符串中的內(nèi)容

2. Java中正則表達式的兩個核心類:

  • Pattern:編譯后的正則表達式模式

  • Matcher:用模式匹配字符串的引擎

二、基本語法

1. 普通字符

普通字符(字母、數(shù)字)直接匹配自身:

  • a 匹配字母"a"

  • 5 匹配數(shù)字"5"

2. 特殊字符(元字符)

這些字符有特殊含義,需要用\轉義:

. ^ $ * + ? { } [ ] \ | ( )

3. 常用元字符

字符說明示例
.匹配任意單個字符a.c 匹配 "abc"、"a1c"
\d數(shù)字 [0-9]\d\d 匹配 "12"、"34"
\D非數(shù)字 [^0-9]\D\D 匹配 "ab"、"##"
\w單詞字符 [a-zA-Z0-9_]\w\w 匹配 "a1"、"B_"
\W非單詞字符\W\W 匹配 "@#"、"! "
\s空白字符 [ \t\n\x0B\f\r]a\sb 匹配 "a b"
\S非空白字符a\Sb 匹配 "a1b"

4. 量詞

量詞說明示例
*0次或多次a* 匹配 ""、"a"、"aa"
+1次或多次a+ 匹配 "a"、"aa"
?0次或1次a? 匹配 ""、"a"
{n}恰好n次a{2} 匹配 "aa"
{n,}至少n次a{2,} 匹配 "aa"、"aaa"
{n,m}n到m次a{2,4} 匹配 "aa"、"aaa"、"aaaa"
正則表達式描述

this is text

匹配字符串 "this is text"

this\s+is\s+text

注意字符串中的 \s+。

匹配單詞 "this" 后面的 \s+ 可以匹配多個空格,之后匹配 is 字符串,再之后 \s+ 匹配多個空格然后再跟上 text 字符串。

可以匹配這個實例:this is text

^\d+(\.\d+)?

^ 定義了以什么開始

\d+ 匹配一個或多個數(shù)字

? 設置括號內(nèi)的選項是可選的

\. 匹配 "."

可以匹配的實例:"5", "1.5" 和 "2.21"。

三、Java中使用正則表達式

1. 簡單匹配示例

String text = "Hello, my phone number is 123-456-7890";
String pattern = "\\d{3}-\\d{3}-\\d{4}"; // 匹配電話號碼格式

boolean isMatch = text.matches(pattern); // false,因為matches要求整個字符串匹配
boolean contains = Pattern.compile(pattern).matcher(text).find(); // true

2. 完整使用步驟

// 1. 編譯正則表達式
Pattern p = Pattern.compile("a*b");

// 2. 創(chuàng)建匹配器
Matcher m = p.matcher("aaaaab");

// 3. 進行匹配
boolean b = m.matches(); // true

3. 常用方法

方法說明
matches()整個字符串是否匹配
find()查找下一個匹配項
group()返回匹配的字符串
start()/end()匹配的起始/結束位置
replaceAll()替換所有匹配項

四、實際應用示例

1. 驗證郵箱格式

String email = "test@example.com";
String regex = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$";

boolean isValid = email.matches(regex); // true

2. 提取所有數(shù)字

String text = "訂單123,金額456.78元";
Pattern p = Pattern.compile("\\d+\\.?\\d*");
Matcher m = p.matcher(text);

while(m.find()) {
    System.out.println("找到數(shù)字: " + m.group());
}
// 輸出:
// 找到數(shù)字: 123
// 找到數(shù)字: 456.78

3. 替換字符串

String text = "2023-05-15";
String newText = text.replaceAll("(\\d{4})-(\\d{2})-(\\d{2})", "$2/$3/$1");
// 結果: "05/15/2023"

五、分組和捕獲

()創(chuàng)建分組:

String text = "John Doe, age 30";
Pattern p = Pattern.compile("(\\w+) (\\w+), age (\\d+)");
Matcher m = p.matcher(text);

if(m.find()) {
    System.out.println("姓名: " + m.group(1) + " " + m.group(2));
    System.out.println("年齡: " + m.group(3));
}
// 輸出:
// 姓名: John Doe
// 年齡: 30

六、常見問題

  1. 轉義問題:Java字符串中\需要寫成\\

    • 正則中的\d → Java字符串中寫成"\\d"

  2. 貪婪匹配:默認是貪婪匹配(匹配盡可能多的字符)

    • 在量詞后加?改為非貪婪匹配:.*?

  3. 性能優(yōu)化

    • 重用Pattern對象(編譯正則表達式比較耗時)

    • 避免過度復雜的正則表達式

總結 

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

相關文章

  • 一文帶你熟練掌握Java中的日期時間相關類

    一文帶你熟練掌握Java中的日期時間相關類

    我們在開發(fā)時,除了數(shù)字、數(shù)學這樣的常用API之外,還有日期時間類,更是會被經(jīng)常使用,比如我們項目中必備的日志功能,需要記錄異常等信息產(chǎn)生的時間,本文就帶各位來學習一下相關的日期時間類有哪些
    2023-05-05
  • SpringBoot+Kotlin中使用GRPC實現(xiàn)服務通信的示例代碼

    SpringBoot+Kotlin中使用GRPC實現(xiàn)服務通信的示例代碼

    本文主要介紹了SpringBoot+Kotlin中使用GRPC實現(xiàn)服務通信的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • SpringBoot集成FastDFS實現(xiàn)防盜鏈功能

    SpringBoot集成FastDFS實現(xiàn)防盜鏈功能

    FastDFS是一個高性能的分布式?件系統(tǒng),本文將為大家詳細介紹一下SpringBoot如何集成FastDFS實現(xiàn)防盜鏈功能,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04
  • 基于Java語言MD5加密Base64轉換方法

    基于Java語言MD5加密Base64轉換方法

    這篇文章主要為大家詳細介紹了基于Java語言的MD5加密Base64轉換方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • IDEA運行Tomcat中文亂碼出現(xiàn)的各種問題

    IDEA運行Tomcat中文亂碼出現(xiàn)的各種問題

    這篇文章主要介紹了IDEA運行Tomcat中文亂碼的各種問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解如何使用maven生成可以執(zhí)行的jar

    詳解如何使用maven生成可以執(zhí)行的jar

    這篇文章主要介紹了詳解如何使用maven生成可以執(zhí)行的jar,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Spring配置文件超詳細講解

    Spring配置文件超詳細講解

    這篇文章主要介紹了Spring配置文件超的相關資料,配置文件是一種存放應用程序或系統(tǒng)配置的文件,允許開發(fā)者和用戶在不修改代碼的情況下調整應用程序的行為和性能,
    2025-03-03
  • Java class文件格式之屬性詳解_動力節(jié)點java學院整理

    Java class文件格式之屬性詳解_動力節(jié)點java學院整理

    這篇文章主要介紹了Java class文件格式之屬性詳解,需要的朋友可以參考下
    2017-06-06
  • Java中樂觀鎖的實現(xiàn)原理小結

    Java中樂觀鎖的實現(xiàn)原理小結

    本文主要介紹了Java中樂觀鎖的實現(xiàn)原理小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-04-04
  • java整合itext?pdf實現(xiàn)自定義PDF文件格式導出方式

    java整合itext?pdf實現(xiàn)自定義PDF文件格式導出方式

    Spring?Boot整合iTextPDF實現(xiàn)自定義PDF導出,按周次和星期顯示打卡記錄打勾,需定義數(shù)據(jù)VO、表格結構,確保所有單元格填充(含空值),測試接口生成格式正確的PDF文件
    2025-07-07

最新評論

罗山县| 周口市| 监利县| 沈丘县| 邯郸县| 景泰县| 句容市| 德江县| 格尔木市| 枞阳县| 陆河县| 平塘县| 仲巴县| 扶风县| 郴州市| 维西| 博乐市| 门头沟区| 若尔盖县| 湖口县| 汽车| 东明县| 海兴县| 德兴市| 拉萨市| 陵川县| 恭城| 会昌县| 元阳县| 南宫市| 西宁市| 古浪县| 汝阳县| 连州市| 宁乡县| 上蔡县| 于田县| 松阳县| 乌拉特后旗| 连平县| 紫阳县|