正則表達式 - 元字符

正則表達式中的元字符是具有特殊含義的字符,它們不表示字面意義,而是用于控制匹配模式。


基本元字符

.?(點號)

  • 匹配除換行符(\n)外的任意單個字符

    示例:a.b?匹配 "aab", "a1b", "a b" 等

^?(脫字符)

  • 匹配字符串的開始位置

  • 示例:^abc?匹配以 "abc" 開頭的字符串

$?(美元符)

  • 匹配字符串的結束位置

  • 示例:xyz$?匹配以 "xyz" 結尾的字符串

\?(反斜杠)

  • 轉義字符,使后面的字符失去特殊含義

  • 示例:\.?匹配實際的點號而不是任意字符


字符類元字符

[]?(方括號)

  • 定義字符集合,匹配其中任意一個字符

  • 示例:[aeiou]?匹配任意一個元音字母

[^]?(否定字符類)

  • 匹配不在方括號中的任意字符

  • 示例:[^0-9]?匹配任意非數字字符

-?(連字符)

  • 在字符類中表示范圍

  • 示例:[a-z]?匹配任意小寫字母


量詞元字符

*?(星號)

  • 匹配前面的子表達式零次或多次

  • 示例:ab*c?匹配 "ac", "abc", "abbc" 等

+?(加號)

  • 匹配前面的子表達式一次或多次

  • 示例:ab+c?匹配 "abc", "abbc" 但不匹配 "ac"

??(問號)

  • 匹配前面的子表達式零次或一次

  • 示例:colou?r?匹配 "color" 和 "colour"

{n}?(花括號)

  • 精確匹配n次

  • 示例:a{3}?匹配 "aaa"

{n,}

  • 至少匹配n次

  • 示例:a{2,}?匹配 "aa", "aaa" 等

{n,m}

  • 匹配n到m次

  • 示例:a{2,4}?匹配 "aa", "aaa", "aaaa"


分組和選擇元字符

()?(圓括號)

  • 定義子表達式或捕獲組

  • 示例:(ab)+?匹配 "ab", "abab" 等

|?(豎線)

  • 表示"或"關系

  • 示例:cat|dog?匹配 "cat" 或 "dog"


特殊字符類元字符

\d:匹配任意數字,等價于?[0-9]

\D:匹配任意非數字,等價于?[^0-9]

\w:匹配任意單詞字符(字母、數字、下劃線),等價于?[a-zA-Z0-9_]

\W:匹配任意非單詞字符,等價于?[^a-zA-Z0-9_]

\s:匹配任意空白字符(空格、制表符、換行符等)

\S:匹配任意非空白字符


邊界匹配元字符

\b

  • 匹配單詞邊界

  • 示例:\bcat\b?匹配 "cat" 但不匹配 "category"

\B

  • 匹配非單詞邊界

  • 示例:\Bcat\B?匹配 "scattered" 中的 "cat" 但不匹配單獨的 "cat"


其他元字符

\n:匹配換行符

\t:匹配制表符

\r:匹配回車符

\f:匹配換頁符

\v:匹配垂直制表符


貪婪與非貪婪量詞

默認情況下,量詞(*,?+,??,?{})是貪婪的,會盡可能多地匹配字符。在量詞后加?可使其變為非貪婪(懶惰)模式:

  • *?:零次或多次,但盡可能少

  • +?:一次或多次,但盡可能少

  • ??:零次或一次,但盡可能少

  • {n,m}?:n到m次,但盡可能少

示例:<.*?>?匹配HTML標簽時不會跨標簽匹配


正向和負向預查

(?=...)?(正向肯定預查)

  • 匹配后面跟著特定模式的位置

  • 示例:Windows(?=95|98)?匹配后面跟著95或98的"Windows"

(?!...)?(正向否定預查)

  • 匹配后面不跟著特定模式的位置

  • 示例:Windows(?!95|98)?匹配后面不跟著95或98的"Windows"

(?<=...)?(反向肯定預查)

  • 匹配前面是特定模式的位置

  • 示例:(?<=95|98)Windows?匹配前面是95或98的"Windows"

(?<!...)?(反向否定預查)

  • 匹配前面不是特定模式的位置

  • 示例:(?<!95|98)Windows?匹配前面不是95或98的"Windows"

實例

接下來我們分析一個匹配郵箱的正則表達式,如下圖:

    QString inputStr = "abc12.000";QRegExp regExp("[0-9.]", Qt::CaseInsensitive);QString numberStr;// 遍歷字符串,提取所有匹配的字符(即數字和小數點)int pos = 0;while ((pos = regExp.indexIn(inputStr, pos)) != -1){numberStr += regExp.cap(0); // cap(0) 獲取當前匹配的字符pos += regExp.matchedLength(); // 移動到下一個匹配位置}// 輸出numberStr = 12.000;

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

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

相關文章

suricata源碼解讀-事務日志

注冊事務日志線程模塊 void TmModuleTxLoggerRegister (void) {tmm_modules[TMM_TXLOGGER].name "__tx_logger__";tmm_modules[TMM_TXLOGGER].ThreadInit OutputTxLogThreadInit;tmm_modules[TMM_TXLOGGER].Func OutputTxLog;tmm_modules[TMM_TXLOGGER].ThreadExi…

【CSS】層疊上下文和z-index

z-index 的作用范圍受“層疊上下文&#xff08;stacking context&#xff09;”影響。&#x1f539; 1. z-index 的基本作用 控制元素在 同一個層疊上下文&#xff08;stacking context&#xff09; 內的堆疊順序。值越大&#xff0c;顯示層級越靠上。&#x1f539; 2. 什么是層…

自動化腳本的降本增效實踐

一、自動化腳本的核心價值自動化腳本通過模擬人類操作完成重復性任務&#xff0c;其核心價值體現在三個維度&#xff1a;首先&#xff0c;在時間成本方面&#xff0c;標準化的數據處理流程可縮短90%以上的操作耗時&#xff1b;其次&#xff0c;在人力成本上&#xff0c;單個腳本…

【C語言】第七課 字符串與危險函數??

C語言中的字符串處理既是基礎&#xff0c;也是安全漏洞的重災區。理解C風格字符串的底層原理及其危險函數的運作方式&#xff0c;對于編寫安全代碼和進行逆向工程分析至關重要。 &#x1f9e9; C風格字符串的本質 C風格字符串本質上是以空字符\0&#xff08;ASCII值為0&#xf…

Mac安裝hadoop

1.在terminal中檢查是否安裝brew命令 brew --version 如果沒有安裝&#xff0c;在terminal中執行命令&#xff0c;安裝brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安裝完成后&#xff0c;再重新打…

多語言編碼Agent解決方案(4)-Eclipse插件實現

Eclipse插件實現&#xff1a;支持多語言的編碼Agent集成 本部分包含Eclipse插件的完整實現&#xff0c;包括多語言支持、命令注冊、API調用和UI集成。插件使用Java開發&#xff0c;基于Eclipse Plugin Development Environment (PDE)。 1. Eclipse插件目錄結構 eclipse-plugin/…

風險規則引擎-RPA 作為自動化依賴業務決策流程的強大工具

機器人流程自動化&#xff08;RPA&#xff09;聽起來好像跟機器人統治世界似的&#xff0c;但其實不是那么回事。RPA 就是一套能在電腦上運行的程序&#xff0c;能快速、高效地自動完成日常重復的工作。RPA 讓你能夠設置一些軟件“機器人”來執行特定的任務。RPA 的一個大好處就…

漏洞無效化學習

一、基礎概念與原理1. 核心定義漏洞無效化&#xff08;Vulnerability Mitigation&#xff09;&#xff1a;并非直接修補漏洞本身&#xff0c;而是通過技術手段降低漏洞被成功利用的概率。其目標是讓攻擊者即使發現漏洞也無法達成攻擊目的。 關鍵思路&#xff1a;通過訪問控制、…

「Vue 項目中實現智能時間選擇:帶業務規則的級聯選擇器」

#創作靈感公司業務需要&#xff0c;某個時間節點前可以選擇到月&#xff0c;某個時間節點后只能選擇季度vue2 Vant2javascriptimport { Cascader, Field, Form, Popup, Button } from vant; import vant/lib/index.css;export default {name: CascaderPage,components: {VanCa…

day1———Qt———應用程序界面設置

1&#xff0c;定義一個Mystring類代替string的功能#include <iostream> #include <string.h>using namespace std; class Mystring {friend ostream &operator<<(ostream &cout,const Mystring &s);friend istream &operator>>(istrea…

apache實現LAMP+apache(URL重定向)

1.apache實現LAMPLAMP是指一組通常一起使用來運行動態網站的自由軟件名稱首字母的縮寫a.L是指Linux操作系統b,.A是指Apache&#xff0c;用來提供Web服務c.M指MySQL&#xff0c;用來提供數據庫服務d.P指PHP&#xff0c;是動態網站的一種開發語言1.1php運行方式說明php是腳本語言…

SAConv可切換空洞卷積

SAConv可切換空洞卷積 帶來的改進機制時可切換的空洞卷積 是一種創新型卷積網絡 專門為增強物體檢測和分割任務&#xff0c;中特征提取去設計 SAC核心時相同的輸入兒子應用到不同空洞率去進行卷積&#xff0c;設計特別開關函數融合這些不同卷積的成果 該方法可讓網絡更靈活的適…

基于Matlab的霧霾天氣和夜間車牌識別系統

在復雜天氣和低光照環境下&#xff0c;車牌識別系統的準確率和穩定性顯著下降&#xff0c;嚴重影響交通管理與智能監控的可靠性。本文針對霧霾天氣和夜間環境下車牌圖像特征模糊、對比度低、噪聲干擾嚴重的問題&#xff0c;提出了一種融合圖像增強與模板匹配的車牌識別方法。系…

華為云/本地化部署K8S-查看容器日志

華為云日志查看 目前工作的大部分情況下&#xff0c;通過華為云LTS云日志服務就可以滿足日常需求。 不過上線時過來支援的開發老哥更習慣于從容器里查看日志&#xff0c;也一并記錄下以備不時之需。 1.登錄服務節點服務器 點擊左側三個橫線&#xff0c;選擇 應用服務-云容器引擎…

【MySQL 死鎖:從 “業務卡頓“ 到 “根因定位“ 的實戰指南】

MySQL 死鎖&#xff1a;從 “業務卡頓” 到 “根因定位” 的實戰指南 后端開發必看&#xff1a;MySQL死鎖排查與預防全攻略線上系統突然報出Deadlock found when trying to get lock; try restarting transaction&#xff0c;用戶操作卡頓甚至超時&#xff0c;排查時卻對著一堆…

從虛擬化基石到云原生架構的降維打擊:用dd/mkfs玩轉namespace隔離,解鎖Docker/K8S資源密碼,看透物理機到云服務器的進化之路

本篇摘要 本文圍繞虛擬化與容器化技術展開&#xff0c;涵蓋架構演進、Docker/K8S優勢與挑戰、namespace隔離實操&#xff08;如主機名/PID隔離&#xff09;、磁盤操作&#xff08;dd/mkfs/df/mount&#xff09;等&#xff0c;對比虛擬機與容器差異&#xff0c;闡明技術原理與架…

自動化測試的概念

文章目錄自動化測試能夠取代人工測試嗎&#xff1f;回歸測試自動化分類自動化測試金字塔為啥單元測試的性價比這么高呢&#xff1f;那為啥UI自動化測試的性價比沒有組件測試的高呢&#xff1f;web自動化測試舉例引入自動化測試的準備工作自動化測試的簡單示例自動化測試能夠取代…

OSPF故障排查實戰:如何通過一條命令精準定位網絡掩碼不匹配問題

掌握display ospf error命令的解讀技巧&#xff0c;快速解決OSPF鄰接關系建立失敗難題。一、問題背景與場景引入 在網絡運維工作中&#xff0c;OSPF&#xff08;開放最短路徑優先&#xff09;協議作為主流的內部網關協議&#xff0c;其穩定運行至關重要。然而&#xff0c;在實際…

Redis----如何引入分布式鎖

一、概述首先引入分布式鎖指的是應用程序引入&#xff0c;不是Redis本身引入&#xff0c;Redis作為中間件可以作為分布式鎖的一個典型實現方案&#xff0c;同時也有一些其他的實現方案。分布式鎖指的是一個/組程序&#xff0c;使用Redis實現的話就是通過添加一個特殊的Key-Valu…

prometheus-2.42.0.linux-amd64.tar.gz 安裝配置展示

一、prometheus 1.1解壓文件 # tar -xzvf prometheus-2.42.0.linux-amd64.tar.gz -C ~/apps/ prometheus-2.42.0.linux-amd64/ prometheus-2.42.0.linux-amd64/NOTICE prometheus-2.42.0.linux-amd64/consoles/ prometheus-2.42.0.linux-amd64/consoles/index.html.example p…