Java—正則表達式(Pattern類和Matcher類)

来源:https://www.cnblogs.com/Andya/archive/2020/03/15/12500399.html
-Advertisement-
Play Games

本文主要介紹Java—正則表達式(Pattern類和Matcher類)的使用。 ...


正則表達式介紹

  正則表達式可以用於對字元串的處理,相當於是一個匹配字元串的模板。主要包含查找、替換、分割、提取等操作;Java中通過PatternMatcher類提供對正則的支持。

字元處理

特殊字元處理

對於特殊字元:$^()[]{}*+?.\|前面都要加上\進行轉義。

預定義字元

預定義字元即為正則表達式中的“通配符”,就是可以匹配多個字元的特殊字元。
|預定義字元|作用|
|-|-|
|.|匹配任意字元|
|\d|digit,代表數字,匹配0-9中的所有數字|
|\D|匹配非數字|
|\s|space,代表空白,匹配所有空白字元(空格、換行、回車、換頁、製表符等)|
|\S|匹配所有非空白字元|
|\w|word,代表單詞,匹配所有單詞字元,包含0-9所有數字、26個英文字母以及下劃線"_"|
|\W|匹配所有非單詞字元|

三種模式的數量表示符

  1. 貪婪模式:Greedy,數量表示符預設為貪婪模式,會一直匹配下去,直到無法匹配為止。
  2. 勉強模式:Reluctant,用問號?尾碼表示,只會匹配最少的字元,也被稱為最小匹配模式。
  3. 占有模式: Possessive, 用加號+尾碼表示。
貪婪模式 勉強模式 占用模式 作用
X? X?? X?? X表達式出現0次或1次
X* X*? X*? X表達式出現0次或多次
X+ X+? X+? X表達式出現1次或多次
X{n} X{n}? X{n}? X表達式出現n次
X{n,} X{n,}? X{n,}? X表達式最少出現n次
X{n,m} X{n,m}? X{n,m}? X表達式最少出現n次,最多出現m次

方括弧表達式

方括弧表達式含義 作用
枚舉 [abcd],表示a、b、c、d中的任意一個字元;
範圍:- [a-e],表示從a到e字母中的任意字母;可結合枚舉進行使用,[a-eu-z],表示從a到e,從u到z範圍內的任意字元
否定:^ [^abcd],表示不是a、b、c、d中的字元;[^a~e]表示不是a至f範圍的字元
與運算:&& [a-g&&[bch],求a~z和bch的交集,則結果為bc
並運算 [a-e[h-j]]

正則表達式的使用

String類常用方法

String類中的查找、替換、分割、提取等操作方法

  1. boolean matches(String regex):判斷該字元串是否匹配指定的正則表達式;
  2. String replaceFirst(String regex, String replaceStr):將該字元串中第一個匹配regex的子串替換成replaceStr;
  3. String replaceAll(String regex, String replaceStr):將該字元串中所有匹配regex的子串替換成replaceStr;
  4. String[] split(String regex):以regex作為分隔符對字元串進行分割;

Matcher類常用方法

  1. find():返回目標字元串中是否包含與Pattern匹配的子串,若傳入int類型的參數,則從該int索引處向下搜索;
  2. group():返回上一次與Pattern匹配的子串;
  3. start():用於確定子串在目標字元串中的位置;返回上一次與Pattern匹配的子串在目標字元串中的開始位置;
  4. end():用於確定子串在目標字元串中的位置;返回上一次與Pattern匹配的子串在目標字元串中的結束位置加1;
  5. matches():判斷整個目標字元串與Pattern是否匹配,要求整個字元串都和Pattern完全匹配時才會返回true;
  6. lookingAt:返回目標字元串首碼與Pattern是否匹配,只需要字元串以Pattern開頭就返回true;
  7. reset():將現有的Matcher對象應用於一個新的字元序列;

Pattern對象用法

  Pattern是不可變類,是正則表達式編譯後在記憶體中的表示形式,在Java中使用正則表達式字元串必須要先被編譯為Patter對象,然後再使用Pattern對象創建對應的Matcher對象。
用法

// 編譯正則表達式為Pattern對象
Pattern pattern = Pattern.compile("bc*d");
// 使用編譯好的Pattern對象創建Matcher對象
Matcher m = p.matcher("bccccd");
boolean b = m.matches();
System.out.println(b);

結果

true

上述步驟等價於

boolean b = Pattern.matches("bc*d", "bccccd");
System.out.println(b);

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2020Python練習七 @2020.3.15 周末綜合作業: 1、編寫用戶登錄介面#1、輸入賬號密碼完成驗證,驗證通過後輸出"登錄成功"#2、可以登錄不同的用戶#3、同一賬號輸錯三次鎖定,(提示:鎖定的用戶存入文件中,這樣才能保證程式關閉後,該用戶仍然被鎖定) 2、編寫程式實現用戶註冊後,可以登 ...
  • package com.io.exam; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; /** * 代行號的 * */ public class TextFileExamLi ...
  • package com.io.exam; import java.io.FileReader; import java.io.IOException; /** * 不帶行號的 */ public class TextFileExam { public static void main(String[ ...
  • 好久沒有搭springMVC項目了,這兩天要寫一個小項目,發現一個奇怪的問題,tomcat啟動正常,但是訪問一直404。剛開始以為是修改了項目的名稱後某個配置文件沒有更新過來,但是看了沒問題,很是納悶。後來發現不通過後臺跳轉的頁面都能正常訪問,通過controller跳轉的頁面就是404,基本鎖定就 ...
  • 緩衝流實現文件的copy,可以對圖片,視頻,zip,rar等文件進行操作 package com.io.buffered; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io. ...
  • package com.io.buffered; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import ja ...
  • jps JVM Process Status Tool,顯示指定系統內所有的 HotSpot 虛擬機進程。顯示信息包括虛擬機執行主類名稱以及這些進程的本地虛擬機唯一ID(Local Virtual Machine Identifier,LVMID)。 選項|作用 | q|只輸出 LVMID,省略主類 ...
  • 1. SpringMVC控制器業務操作 在SpringMVC第二節中我們瞭解到mvc控制器處理頁面url請求返迴響應視圖,除了這些操作外,控制器還需要處理更重要的業務,如:接收前臺頁面傳遞的參數、綁定數據到頁面、返回json數據、文件上傳、文件下載等業務操作。 1.1.參數接收 1.1.1. 配置請 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...