26、正則表達式

目錄

一. 匹配字符

.:匹配除換行符外的任意單個字符。

二. 位置錨點

^:匹配輸入字符串的開始位置。

$:匹配輸入字符串的結束位置。

\b:匹配單詞邊界。

\B:匹配非單詞邊界。

三. 重復限定符

*:匹配前面的字符或子表達式零次或多次(貪婪模式)。

+:匹配前面的字符或子表達式一次或多次(貪婪模式)。

?:匹配前面的字符或子表達式零次或一次(懶惰模式)。

{n}:匹配前面的字符或子表達式恰好n次。

{n,}:匹配前面的字符或子表達式至少n次。

{n,m}:匹配前面的字符或子表達式至少n次,但不超過m次。

四. 分支條件

|:邏輯“或”,匹配兩個或多個選項中的一個。

五. 字符類

[abc]:匹配方括號內的任意一個字符。

[^abc]:匹配不在方括號內的任意一個字符。

\d:匹配任何數字字符。

\D:匹配任何非數字字符。

\s:匹配任何空白字符。

\S:匹配任何非空白字符。

\w:匹配任何字母數字字符及下劃線。

\W:匹配任何非字母數字字符及非下劃線。

六. 轉義字符

\:轉義字符,用于匹配元字符本身或特殊序列。

七. 特殊序列

\t:匹配制表符(Tab)。

\n:匹配換行符。

\r:匹配回車符。

\f:匹配換頁符。

\v:匹配垂直制表符。

八. 分組和引用

():創建捕獲組,用于分組和提取匹配的文本。

(?:...):創建非捕獲組,用于分組但不捕獲匹配的文本。

\數字:后向引用,引用之前捕獲組匹配的文本。配合捕獲組使用

九. 斷言

(?=...):正向先行斷言,匹配后面跟著特定模式的字符串。

(?!...):負向先行斷言,匹配后面不跟著特定模式的字符串。

(?<=...):正向后行斷言,匹配前面有特定模式的字符串。

(?

十. Unicode 和其他屬性

十一. 遞歸

十二.重復模式


????????正則表達式(Regular Expression,簡稱Regex)是一種用于字符串搜索和操作的強大工具,它使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。它是一套獨立的規范,各類編程語言都會提供一些API,支持正則表達式。正則表達式由普通字符(例如,a-z、A-Z、0-9)和特殊字符(稱為“元字符”)組成。以下是一些常用的元字符及其含義:

當然,以下是正則表達式元字符和特性的分類,每個都附有一個簡單的案例和清晰的輸出格式說明:

一. 匹配字符

.:匹配除換行符外的任意單個字符。

示例a.t 匹配 "act"、"a1t" 或 "a!t"。

二. 位置錨點

^:匹配輸入字符串的開始位置。

示例^Hello 匹配以 "Hello" 開頭的句子。

  • $:匹配輸入字符串的結束位置。

示例World$ 匹配以 "World" 結尾的句子。

\b:匹配單詞邊界。

示例\bworld? 這個正則表達式匹配的是 "world" 作為一個完整單詞出現的情況

  • \B:匹配非單詞邊界。

示例\Bworld \B 匹配 "helloworld" 中的 "world"。

三. 重復限定符

*:匹配前面的字符或子表達式零次或多次(貪婪模式)。

示例a* 匹配 "a"、"aa" 或 "aaa"。

+:匹配前面的字符或子表達式一次或多次(貪婪模式)。

示例a+ 匹配 "a"、"aa" 或 "aaa",但不匹配空字符串。

?:匹配前面的字符或子表達式零次或一次(懶惰模式)。

示例a? 匹配 "a" 或空字符串。

{n}:匹配前面的字符或子表達式恰好n次。

示例a{3} 匹配 "aaa"。

{n,}:匹配前面的字符或子表達式至少n次。

示例a{3,} 匹配 "aaa"、"aaaa" 或 "aaaaa"。

{n,m}:匹配前面的字符或子表達式至少n次,但不超過m次。

示例a{2,3} 匹配 "aa" 或 "aaa"。

四. 分支條件

|:邏輯“或”,匹配兩個或多個選項中的一個。

示例cat|dog 匹配 "I have a cat" 或 "I have a dog"。

五. 字符類

[abc]:匹配方括號內的任意一個字符。

示例[abc] 匹配 "a"、"b" 或 "c"。

[^abc]:匹配不在方括號內的任意一個字符。

示例[^abc] 匹配 "d"、"e" 或 "f"。

\d:匹配任何數字字符。

示例\d 匹配 "1"、"2" 或 "3"。

\D:匹配任何非數字字符。

示例\D 匹配 "a"、"b" 或 "c"。

\s:匹配任何空白字符。

示例\s 匹配空格、制表符或換行符。

\S:匹配任何非空白字符。

示例\S 匹配 英文字母。

  • \w:匹配任何字母數字字符及下劃線。

示例\w 匹配 "a"、"1" 或 "_"。

  • \W:匹配任何非字母數字字符及非下劃線。

示例\W 匹配空格或 "!"。

六. 轉義字符

\:轉義字符,用于匹配元字符本身或特殊序列。

示例\. 匹配實際的點字符。

七. 特殊序列

\t:匹配制表符(Tab)。

示例\t 匹配制表符。

\n:匹配換行符。

示例\n 匹配換行符。

\r:匹配回車符。

示例\r 匹配回車符。(回車符:將光標移回行首,不換行。換行符:將光標移至下一行開頭,換行。)

Windows回車換行符都是enter鍵,單獨敲出太麻煩,算了

\f:匹配換頁符。

示例\f 匹配換頁符。

通常用于打印機或文本處理軟件中,以指示開始新的一頁。在大多數文本編輯器或命令行界面中,換頁符不是通過鍵盤直接輸入的。沒法演示。

\v:匹配垂直制表符。

示例\v 匹配垂直制表符。

垂直制表符通常不通過鍵盤直接輸入,因為它主要用于老式的電傳打字機和一些特殊的文本處理場景。

八. 分組和引用

():創建捕獲組,用于分組和提取匹配的文本。

示例(abc) 匹配 "abc" 并捕獲它。

(?:...):創建非捕獲組,用于分組但不捕獲匹配的文本。

示例(?:abc) 匹配 "abc" 但不捕獲它。

說明:在正則表達式中使用它來對子表達式進行分組,但是不捕獲匹配的結果。這意味著匹配到的內容不會像捕獲組那樣被存儲起來,以便后續使用。

\數字:后向引用,引用之前捕獲組匹配的文本。配合捕獲組使用

示例(abc)\1 匹配 "abcabc"。匹配文本 abc 出現兩次,并且中間沒有任何其他符號。

九. 斷言

(?=...):正向先行斷言,匹配后面跟著特定模式的字符串。

示例abc(?=def) 匹配 "abc" 后面跟著 "def"。

(?!...):負向先行斷言,匹配后面不跟著特定模式的字符串。

示例abc(?!def) 匹配 "abc" 后面不跟著 "def"。

  • (?<=...):正向后行斷言,匹配前面有特定模式的字符串。

示例(?<=def)abc 匹配 "abc" 前面有 "def"。

(?<!...):負向后行斷言,匹配前面沒有特定模式的字符串。

示例(?<!def)abc 匹配 "abc" 前面沒有 "def"。

十. Unicode 和其他屬性

  • \p{...}:匹配具有特定 Unicode 屬性的字符。

示例\p{L} 匹配任何字母

很多正則表達式引擎不支持 Unicode 屬性轉義或沒有啟用Unicode模式,暫時沒測試。

十一. 遞歸

  • (?R):遞歸匹配,正則表達式可以引用自身。

示例(?R) 可以遞歸地匹配重復的模式。

正則表達式引擎不支持遞歸模式,暫時沒測試。

十二.重復模式

  • 貪婪模式:對于重復限定符,默認情況下會匹配盡可能多的字符,這叫做貪婪模式。

  • 懶惰模式:在重復限定符之后加上 ?,表示匹配盡可能少的字符,這叫做懶惰模式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66762.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66762.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66762.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Chrome遠程桌面無法連接怎么解決?

Chrome遠程桌面連接已停止工作 Chrome遠程桌面是一款極為便捷的瀏覽器插件&#xff0c;能夠幫助用戶將自己的計算機連接到其他設備&#xff0c;無論是手機、平板電腦還是其他電腦。然而&#xff0c;在實際使用中&#xff0c;許多用戶可能會面臨各種各樣的問題&#xff0c;比如…

備賽藍橋杯之第十五屆職業院校組省賽第一題:智能停車系統

提示&#xff1a;本篇文章僅僅是作者自己目前在備賽藍橋杯中&#xff0c;自己學習與刷題的學習筆記&#xff0c;寫的不好&#xff0c;歡迎大家批評與建議 由于個別題目代碼量與題目量偏大&#xff0c;請大家自己去藍橋杯官網【連接高校和企業 - 藍橋云課】去尋找原題&#xff0…

基于AutoDL云計算平臺+LLaMA-Factory訓練平臺微調本地大模型

1. 注冊與認證 訪問AutoDL官網&#xff1a;前往 AutoDL官網。 注冊賬號&#xff1a;完成注冊流程。 實名認證&#xff1a;按照要求完成實名認證&#xff0c;以確保賬號的合規性。 2. 選擇GPU資源 進入算力市場&#xff1a;在官網首頁點擊“算力市場”菜單。 挑選GPU&#x…

C語言練習(19)

已知5個學生的4門課的成績&#xff0c;要求求出每個學生的平均成績&#xff0c;然后對平均成績從高到低將各學生的成績記錄排序&#xff08;成績最高的學生排在數組最前面的行&#xff0c;成績最低的學生排在數組最后面的行&#xff09;。 #include <stdio.h> #include &…

微信小程序使用picker根據接口給的省市區的數據實現省市區三級聯動或者省市區街道等多級聯動

接口數據如上圖 省市區多級聯動&#xff0c;都是使用的一個接口通過傳參父類的code。返回我們想要的數據 比如獲取省就直接不要參數。市就把省得code傳給接口&#xff0c;區就把市的code作為參數。 <picker mode"multiSelector" :range"mulSelect1" …

VOSK實現【離線中文語音】識別

Vosk是一款開源的離線語音識別工具包&#xff0c;具有以下功能&#xff1a; 多語言支持&#xff1a;能夠對20多種語言和方言進行語音識別&#xff0c;如中文、英語、德語、法語、西班牙語等&#xff0c;可滿足不同用戶的語言需求。 模型輕量化&#xff1a;每種語言的模型大小僅…

【Maui】注銷用戶,采用“手勢”點擊label彈窗選擇

文章目錄 前言一、問題描述二、解決方案三、軟件開發&#xff08;源碼&#xff09;3.1 方法一&#xff1a;前端綁定3.2 方法二&#xff1a;后端綁定3.3 注銷用戶的方法 四、項目展示 前言 .NET 多平臺應用 UI (.NET MAUI) 是一個跨平臺框架&#xff0c;用于使用 C# 和 XAML 創…

macOS使用LLVM官方發布的tar.xz來安裝Clang編譯器

之前筆者寫過一篇博文ubuntu使用LLVM官方發布的tar.xz來安裝Clang編譯器介紹了Ubuntu下使用官方發布的tar.xz包來安裝Clang編譯。官方發布的版本中也有MacOS版本的tar.xz&#xff0c;那MacOS應該也是可以安裝的。 筆者2015款MBP筆記本&#xff0c;CPU是intel的&#xff0c;出廠…

中企出海:從國際投資建廠:投前投中投后重點事項

1. 投前重點事項 1.1 市場調研與分析 在國際投資建廠的投前階段&#xff0c;市場調研與分析是至關重要的基礎工作&#xff0c;它能夠幫助企業全面了解目標市場&#xff0c;為后續決策提供有力依據。 市場規模與潛力&#xff1a;通過收集和分析目標國家或地區的經濟數據、行業…

Git實用指南:忽略文件、命令別名、版本控制、撤銷修改與標簽管理

目錄 1.忽略特殊文件 1.1.那如何配置我們需要忽略的文件的呢&#xff1f; 1.2.如何檢驗效果&#xff1f; 2.給命令配置別名 3.基本操作之版本回退 3.1.使用場景&#xff1a; 3.2.使用方法&#xff1a; 4.撤銷修改 情況一&#xff1a;對于工作區的代碼&#xff0c;還沒…

Pytorch深度學習指南 卷I --編程基礎(A Beginner‘s Guide) 第1章 一個簡單的回歸

本章正式開始使用pytorch的接口來實現對應的numpy的學習的過程&#xff0c;來學習模型的實現&#xff0c;我們會介紹numpy是如何學習的&#xff0c;以及我們如何一步步的通過torch的接口來實現簡單化的過程&#xff0c;優雅的展示我們的代碼&#xff0c;已經我們的代碼完成的事…

String.join()

String.join() 方法是 Java 8 及其以上版本中的一個方法&#xff0c;用于將多個字符串用指定的分隔符連接成一個字符串。 其語法為&#xff1a; java復制 String joinedString String.join(CharSequence delimiter, CharSequence... elements); 在這個方法中&#xff1a;…

FastAPI 數據庫配置最佳實踐

FastAPI 數據庫配置最佳實踐 1. 基礎配置 1.1 數據庫連接配置 from sqlalchemy import create_engine, event from sqlalchemy.orm import sessionmaker, declarative_base from sqlalchemy.pool import QueuePool from sqlalchemy.exc import SQLAlchemyError import loggi…

深度解析 Java 的幻讀現象與應對策略

目錄 一、幻讀現象的本質 二、幻讀在 Java 數據庫編程中的體現 三、幻讀帶來的問題 四、應對幻讀的策略 1. 數據庫隔離級別 2. 應用層解決方案 五、總結 在 Java 的數據庫編程領域&#xff0c;幻讀是一個不容忽視的概念。它涉及到數據庫事務處理過程中數據一致性的關鍵問…

Glary Utilities Pro 多語便攜版系統優化工具 v6.21.0.25

Glary Utilities是一款功能強大的系統優化工具軟件&#xff0c;旨在幫助用戶清理計算機垃圾文件、修復系統錯誤、優化系統性能等。 軟件功能 清理和修復&#xff1a;可以清理系統垃圾文件、無效注冊表項、無效快捷方式等&#xff0c;修復系統錯誤和藍屏問題。 優化和加速&…

【貪心算法】洛谷P1106 - 刪數問題

2025 - 12 - 26 - 第 46 篇 【洛谷】貪心算法題單 - 【貪心算法】 - 【學習筆記】 作者(Author): 鄭龍浩 / 仟濹(CSND賬號名) 目錄 文章目錄 目錄P1106 刪數問題題目描述輸入格式輸出格式樣例 #1樣例輸入 #1樣例輸出 #1 提示思路代碼 P1106 刪數問題 題目描述 鍵盤輸入一個高…

Oracle 創建并使用外部表

目錄 一. 什么是外部表二. 創建外部表所在的文件夾對象三. 授予訪問外部表文件夾的權限3.1 DBA用戶授予普通用戶訪問外部表文件夾的權限3.2 授予Win10上的Oracle用戶訪問桌面文件夾的權限 四. 普通用戶創建外部表五. 查詢六. 刪除 一. 什么是外部表 在 Oracle 數據庫中&#x…

基于FPGA的BPSK+costas環實現,包含testbench,分析不同信噪比對costas環性能影響

目錄 1.算法仿真效果 2.算法涉及理論知識概要 3.Verilog核心程序 4.完整算法代碼文件獲得 1.算法仿真效果 本作品是之前作品的改進和擴展&#xff1a; 1.m基于FPGA的BPSK調制解調通信系統verilog實現,包含testbench,包含載波同步_csdn基于fpga的bpsk-CSDN博客 2.m基于FP…

Linux 目錄操作詳解

Linux目錄操作詳解 1. 獲取當前工作目錄1.1 getcwd()1.2 get_current_dir_name() 2. 切換工作目錄2.1 chdir() 3. 創建和刪除目錄3.1 mkdir()3.2 rmdir() 4. 獲取目錄中的文件列表4.1 opendir() 打開目錄4.2 readdir() 讀取目錄內容4.3 closedir() 關閉目錄 5. dirent 結構體6.…

Spring 依賴注入詳解:創建 Bean 和注入依賴是一回事嗎?

1. 什么是依賴注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;&#xff1f; 依賴注入 是 Spring IoC&#xff08;控制反轉&#xff09;容器的核心功能。它的目標是將對象的依賴&#xff08;如其他對象或配置&#xff09;從對象本身中剝離&#xff0c;由容器負…