【C#】正則表達式

一、核心優勢

用一小段規則搞定大量復雜的字符串匹配,查找和替換,并且可移植可復用。


使用正則表達式的好處:

1. 強大且靈活:可以一次性匹配非常復雜的規則,比如驗證郵箱、提取特定的格式日志、解析URL;

2. 跨語言:

????????支持的語言:Python、JavaScript、C#、Java、 PHP、Lua;

? ? ? ? 支持的工具:grep、sed、Notepad++、VSCode;

3. 減少代碼量:

? ? ? ? 進行復雜的字符串處理時,可能需要幾十行代碼,正則表達式幾行就能搞定;

4. 靈活替換與批量處理:

? ? ? ? 能批量替換符合模式的文本,無需逐個字符串對比;結合分組引用,可以保留和重用匹配部分;

5. 可讀性與可維護性:

? ? ? ? 具有高度的可讀性和可維護性,避免重復造輪子。

二、適用場景:

場景示例
數據驗證檢查郵箱、手機號、身份證號碼、IP地址、URL是否合法
數據提取從JSON、HTML、日志中找到特定字段
批量替換替換文本文件中的格式
日志分析解析nginx/apache日志提取訪問IP、請求時間
爬蟲分析對爬蟲的數據進行分析
IDE/文本編輯器查找替換實現大量重復代碼的查找和替換

正則特別合適的場景是有明確模式的文本處理,可以大量減少代碼量,提高效率。

三、正則表達式具體內容

1.基礎匹配

符號功能示例匹配內容
abc精確匹配cat僅匹配“cat”
.任意單個字符c.t"cat",“cut”,但不匹配"ct"
[]匹配方括號中任意一個字符[abc]“a”,“b”,“c”
[^]

匹配不在方括號內字符

[^0-9]非數字字符

2. 預定義字符類

符號功能
\d數字,等同[0-9]
\D非數字,等同[^0-9]
\w單詞字符
\W非單詞字符
\s空白字符(例如空格、制表、換行)
\S非空白字符

3. 量詞

符號功能
*0次或者多次
+一次或者多次
?0次或1次
{n}恰好n次,例如a{3}->“aaa”
{n,}至少n次,例如a{2,}->"aa"/"aaa"
{n,m}n到m次,例如a{2,4}->"aa"/'aaa"/"aaaa"

4. 邊界與位置

符號功能
^行首才匹配,例如^abc->"abc"
$行尾才匹配,例如abc$->"xyzabc"
\b

單詞邊界,例如\bcat\b->可以匹配 "The cat sat on the mat." 中的 "cat"

但不匹配 "category" 中的 "cat"。

\B非單詞邊界

5. 分組與引用

符號功能
(abc)

? ? ? ? 分組,整體作為一個單元

例子:(go)+ 可以匹配 "go", "gogo", "gogogo" 等。

捕獲例子:(\d{4})-(\d{2})-(\d{2}) 可以匹配日期 "2025-08-12",并分別捕獲年份、月份和日期。

6. 轉義字符與特殊字符

符號功能
\轉義特殊字符,使其變為普通字符
|

用于在兩個或多個模式中選擇一個。

例子:cat|dog 匹配 "cat" 或 "dog"。

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

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

相關文章

【[特殊字符][特殊字符] 協變與逆變:用“動物收容所”講清楚 PHP 類型的“靈活繼承”】

你有沒有遇到過這樣的問題:“為什么子類方法可以返回 Cat,而父類只寫了返回 Animal?” “為什么參數反而能從 CatFood 變成更寬泛的 Food?”這些看似“違反直覺”的設計,其實背后有一個優雅的編程概念:協變…

cesium/resium 修改子模型材質

我是 www.v2ex.com/t/1151549 的作者,在csdn這邊補全一些更多的信息 相關工具 主項目插件版本: "cesium": "^1.131.0",、"resium": "^1.19.0-beta.1"、"three": "^0.178.0"、"react…

nvm install 14.21.3 時npm 無法下載和識別

錯誤:C:\Users\H3C>nvm install 14.21.3 Downloading node.js version 14.21.3 (64-bit)... Complete Downloading npm... Creating C:\Users\H3C\AppData\Local\Temp\nvm-install-939491942\temp Downloading npm version 6.14.18... Error while downloading h…

【網絡運維】Linux:LNMP 項目實踐

LNMP 項目實踐 簡介:什么是 LAMP/LNMP LAMP:LinuxApacheMysql/MariadbPHP/Python/Perl。 LNMP:LinuxNginxMysql/MariadbPHP/Python/Perl。 Linux:操作系統,提供程序運行基礎。Apache/Nginx:Web 服務器&…

用 Docker 安裝并啟動 MySQL:從零到實戰的完整指南

用 Docker 安裝并啟動 MySQL:從零到實戰的完整指南MySQL 是目前最流行的關系型數據庫之一,廣泛應用于各類應用系統中。使用 Docker 部署 MySQL 可以極大簡化環境配置,保證開發、測試和生產環境的一致性。本文將詳細介紹如何使用 Docker 安裝、…

動態規劃----1.爬樓梯

70. 爬樓梯 - 力扣(LeetCode) /** 1階:1步,即1種; 2階:1步1步或直接2步,即2種 f(1) 1,f(2) 2 3階:由1階邁2步,或2階邁一步; 4階:由2階邁2步,或3階1步; n階:由n-2階邁2步,或n-1階邁1步 f(n) f(n - 1) f(n - 2) */ class Solution {/**1階:1步,即1種…

special topic 11 (1)

preface 雖然我知道專業課必須得學,但是要學的東西,好多,我對專業課很害怕,稍微往后挪一挪,今天學了兩個強化網課之后再學專業課吧。今天的目標是學完 11 到 14.任重道遠,加油!從今天開始盡量早…

MTD和FTL的關系

在嵌入式存儲系統里,MTD(Memory Technology Device)和 FTL(Flash Translation Layer)是上下兩層、互相配合的概念。你可以把它想成**“原始硬件接口”和“硬盤驅動”**的關系。1. MTD 是什么定位:內核里對原…

自動駕駛 HIL 測試:構建 “以假亂真” 的實時數據注入系統

01 引言在端到端自動駕駛的研發競賽中,算法的迭代速度遠超物理世界的測試能力。單純依賴路測不僅成本高昂、周期漫長,更無法窮盡決定系統安全性的關鍵邊緣場景(Corner Cases)。因此,硬件在環(HIL&#xff0…

jdk升級

列出所有的jdk版本 /usr/libexec/java_home -V 永久切換版本 export JAVA_HOME(/usr/libexec/javahome?v11)exportPATH(/usr/libexec/java_home -v 11) export PATH(/usr/libexec/javah?ome?v11)exportPATHJAVA_HOME/bin:$PATH 保存后執行 source ~/.zshrc

Openlayers基礎教程|從前端框架到GIS開發系列課程(24)openlayers結合canva繪制矩形繪制線

本章節講解Canvas如何結合 Openlayer 使用&#xff0c;首先我們講解Canvas的繪圖基礎。我們初始化地圖的時候可以看見&#xff0c;實際上Openlayer的地圖就是用Canvas實現繪制的。Canvas繪制基本概念什么是canvas&#xff1f;HTML5 <canvas> 元素用于圖形的繪制&#…

深度學習——01 深度學習簡介

1 什么是深度學習&#xff1f;人工智能是個大范疇&#xff0c;目標是打造智能機器和程序&#xff1b; 機器學習是實現人工智能的一種途徑&#xff0c;它能讓機器在不被明確編程的情況下自主學習&#xff1b;而深度學習&#xff0c;是機器學習的一個分支&#xff0c;它是基于深度…

自然語言處理( NLP)基礎

一、基本概念自然語言處理也就是Natural Language Processing&#xff0c;簡稱NLP。NLP就是人工只能和語言學領域的一個分支&#xff0c;涉及到計算機與人類語言之間的相互作用。主要目標是讓計算機能夠理解、解釋和生成人類語言的數據。1 自然語言處理的基本介紹NLP包括但不限…

云原生作業(nginx)

目錄 1 Web 服務基礎介紹 1.1 Web 服務介紹 1.1.1 Apache 經典的 Web 服務端 1.1.2 Nginx-高性能的 Web 服務端 1.1.3 用戶訪問體驗和性能 1.1.4 服務端 I/O 流程 1.2 I/O 模型 1.2.1 I/O 模型相關概念 1.2.2 網絡 I/O 模型 1.2.3 五種 IO 對比 1.2.4 I/O 的具體實現…

NY198NY203美光固態閃存NY215NY216

NY198NY203美光固態閃存NY215NY216技術架構與核心創新突破美光NY系列&#xff08;含NY198/NY203/NY215/NY216&#xff09;作為新一代企業級存儲解決方案&#xff0c;其底層采用232層NAND閃存三維堆疊工藝&#xff0c;如同垂直建造數字世界的摩天大樓&#xff0c;在有限芯片面積…

後端開發技術教學(四) 數據交互延伸

書接上回&#xff1a;後端開發技術教學(三) 表單提交、數據處理-CSDN博客 必要資源&#xff1a; trae中文版下載網址: TRAE - The Real AI Engineer phpStudy 2018 : phpStudy - Windows 一鍵部署 PHP 開發環境 小皮出品 前言 大家好&#xff0c;我是小楓。書接上期說到的後…

華清遠見25072班C語言學習day7

重點內容&#xff1a;二維整形數組&#xff1a;定義&#xff1a;數據類型 數組名[行數][列數];數組中元素的訪問&#xff1a;通過行標和列標來訪問、行標從0開始&#xff0c;列標從0開始初始化和賦值&#xff1a;int arr1[2][3]{1,2,3,4,5,6}; -->二維數組完全初始化int arr…

FPGA實現Aurora 64B66B數據回環傳輸,基于GTX高速收發器,提供2套工程源碼和技術支持

目錄1、前言Aurora 64B66B是啥&#xff1f;官方有Example&#xff0c;為何要用你這個&#xff1f;工程概述免責聲明2、相關方案推薦我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目我這里已有的 GT 高速接口解決方案本方案在Aurora 8B10B上的應用3、工程詳細設計方…

實用硬件設計規范要點-原理圖

此處所涉及的并非指導硬件工程師如何繪制原理圖&#xff0c;而是旨在規范原理圖的模板&#xff0c;統一原理圖的設計方式&#xff0c;確保原理圖具備良好的可閱讀性&#xff0c;并統一與下一環節——PCB LAYOUT的接口。具體的硬件設計方法&#xff0c;諸位需在未來的工作中加以…

用 Apache Iceberg 與 Apache Spark 在 Google Cloud 打造高性能、可擴展的數據湖倉

大數據分析版圖不斷演進&#xff0c;組織正尋求更靈活、可擴展且具成本效益的方式來管理與分析海量數據。這一追求催生了數據湖倉范式&#xff0c;它將數據湖的低成本存儲與靈活性&#xff0c;與數據倉庫的數據管理能力和事務一致性相結合。站在這場變革中心的是 Apache Iceber…