【筆試題心得】關于正則的一些整理

本文部分內容摘抄整理自?正則表達式 – 教程 | 菜鳥教程

在筆試的過程中,也常常會對正則表達式進行考察,這里對正則表達式的常見用法,做一個學習和總結。

正則表達式的模式可以包括以下內容:

  • 字面值字符:例如字母、數字、空格等,可以直接匹配它們自身。

  • 特殊字符:例如點號?.、星號?*、加號?+、問號???等,它們具有特殊的含義和功能。

  • 字符類:用方括號?[ ]?包圍的字符集合,用于匹配方括號內的任意一個字符。

  • 元字符:例如?\d\w\s?等,用于匹配特定類型的字符,如數字、字母、空白字符等。

  • 量詞:例如?{n}{n,}{n,m}?等,用于指定匹配的次數或范圍。

  • 邊界符號:例如?^$\b\B?等,用于匹配字符串的開頭、結尾或單詞邊界位置。

特殊字符:

字符描述
\

將下一個字符標記為一個特殊字符、或一個原義字符、或一個 向后引用、或一個八進制轉義符。例如,'n' 匹配字符 "n"。'\n' 匹配一個換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。

*

匹配前面的子表達式零次或多次例如,zo* 能匹配 "z" 以及 "zoo"。* 等價于{0,}。

+

匹配前面的子表達式一次或多次例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。

?

匹配前面的子表達式零次或一次例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等價于 {0,1}。

字符類:?

字符描述
x|y

匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。

[xyz]

字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

[^xyz]

負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。

[a-z]

字符范圍。匹配指定范圍內的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內的任意小寫字母字符。

[^a-z]

負值字符范圍。匹配任何不在指定范圍內的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內的任意字符。

量詞:

字符描述
{n}

n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。

{n,}

n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價于 'o+'。'o{0,}' 則等價于 'o*'。

{n,m}

m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價于 'o?'。請注意在逗號和兩個數之間不能有空格。

邊界符號:

字符描述
^

匹配輸入字符串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置。

$

匹配輸入字符串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。

\b

匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

\B

匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'

?元字符:

字符描述
\d

匹配一個數字字符。等價于 [0-9]。

\D

匹配一個非數字字符。等價于 [^0-9]。

\w

匹配字母、數字、下劃線。等價于'[A-Za-z0-9_]'。

\W

匹配非字母、數字、下劃線。等價于 '[^A-Za-z0-9_]'。

\xn

匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如,'\x41' 匹配 "A"。'\x041' 則等價于 '\x04' & "1"。正則表達式中可以使用 ASCII 編碼。

\num

匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'(.)\1' 匹配兩個連續的相同字符。

\n

標識一個八進制轉義值或一個向后引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為向后引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個八進制轉義值。

\nm

標識一個八進制轉義值或一個向后引用。如果 \nm 之前至少有 nm 個獲得子表達式,則 nm 為向后引用。如果 \nm 之前至少有 n 個獲取,則 n 為一個后跟文字 m 的向后引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。

\nml

如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。

\un

匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字符。例如, \u00A9 匹配版權符號 (?)。

?其他符號:

字符描述
\f

匹配一個換頁符。等價于 \x0c 和 \cL。

\n

匹配一個換行符。等價于 \x0a 和 \cJ。

\r

匹配一個回車符。等價于 \x0d 和 \cM。

\s

匹配任何空白字符,包括空格、制表符、換頁符等等。等價于 [ \f\n\r\t\v]。

\S

匹配任何非空白字符。等價于 [^ \f\n\r\t\v]。

\t

匹配一個制表符。等價于 \x09 和 \cI。

\v

匹配一個垂直制表符。等價于 \x0b 和 \cK。

?示例1:

var str = "abcd test@runoob.com 1234";
var patt1 = /\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}\b/g;
document.write(str.match(patt1));

以下標記的文本是獲得的匹配的表達式:

test@runoob.com

?示例2:

var str = "https://www.runoob.com:80/html/html-tutorial.html";
var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
arr = str.match(patt1);
for (var i = 0; i < arr.length ; i++) {document.write(arr[i]);document.write("<br>");
}

以下標記的文本是獲得的匹配的表達式:

  • 第一個括號子表達式包含?https
  • 第二個括號子表達式包含?www.runoob.com
  • 第三個括號子表達式包含?:80
  • 第四個括號子表達式包含?/html/html-tutorial.html

這個正則表達式用于匹配一個URL(統一資源定位符)字符串,它的結構通常是:

???????????<協議>://<主機名>:<端口號>/<路徑>

這個正則表達式的解釋如下:

  • (\w+):這部分匹配一個或多個字母、數字或下劃線,捕獲組1。這通常是協議部分(如http、https等)。
  • :\/\/:匹配 "://" 字符串,用來分隔協議和主機名。
  • ([^/:]+):這部分匹配一個或多個非斜杠且非冒號的字符,捕獲組2。這通常是主機名部分。
  • (:\d*)?:這部分匹配冒號和一個或多個數字(可選),捕獲組3。這通常是端口號部分。其中?? 是一個量詞,用于指定其前面的元素是可選的,即出現零次或一次因為不是每個URL都包含端口號
  • ([^# ]*):這部分匹配零個或多個非空格和非#字符,捕獲組4。這通常是路徑部分。

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

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

相關文章

數據結構:堆的實現

1.堆的概念 如果有一個關鍵碼的集合 K { k1 &#xff0c;k2 &#xff0c;k3 &#xff0c;…&#xff0c;kn }&#xff0c;把它的所有元素按完全二叉樹的順序存儲方式存儲在一個一維數組中&#xff0c;并且 k(i) < k(i*21) 和 k(i) < k(i*22)&#xff0c; i 0 &#xff…

MongoDB增刪改查操作

數據庫操作&#xff1a; 在MongoDB中&#xff0c;文檔集合存在數據庫中。 要選擇使用的數據庫&#xff0c;請在mongo shell程序中發出 use <db> 語句 // 查看有哪些數據庫 show dbs;// 如果數據庫不存在&#xff0c;則創建并切換到該數據庫&#xff0c;存在則直接切換到…

分布式消息中間件

消息中間件是Java開發消息隊列的一種中間件產品。中間件類似windows編程開發中的插件。工具插件在軟件工具中是中間插件。插件也是應用程序。消息的分發過程包裝之后是chatlog 系統或者是手機短信。系統與系統之間的通信通過消息的發送和接收。堆積頻繁過多的系統通知消息需要進…

C++之模板進階

模板進階 非類型模板參數模板的特化概念函數模板特化類模板特化全特化偏特化 模板分離編譯什么是分離編譯模板的分離編譯解決方法 模板總結 非類型模板參數 模板參數分兩種&#xff1a;類型形參與非類型形參。 類型形參&#xff1a;出現在模板參數列表中&#xff0c;跟在class…

docker安裝consul

1、下載consul鏡像 docker pull consul2、啟動consul docker run -d --restartalways --name consul -p 8500:8500 consul agent -server -bootstrap-expect1 -ui -bind0.0.0.0 -client0.0.0.03、查看consul日志 docker logs consul4、檢驗是否安裝成功

drawio----輸出pdf為圖片大小無空白(圖片插入論文)

自己在寫論文插入圖片時為了讓論文圖片放大不模糊&#xff0c;啥方法都試了&#xff0c;最后摸索出來這個。 自己手動畫圖的時候導出pdf總會出現自己的圖片很小&#xff0c;pdf的白邊很大如下如所示&#xff0c;插入論文的時候后雖然放大不會模糊&#xff0c;但是白邊很大會顯…

【數據結構OJ題】用隊列實現棧

原題鏈接&#xff1a;https://leetcode.cn/problems/implement-stack-using-queues/ 目錄 1. 題目描述 2. 思路分析 3. 代碼實現 1. 題目描述 2. 思路分析 可以用兩個隊列去實現一個棧&#xff0c;每次始終保持一個隊列為空。 入棧相當于給非空隊列進行入隊操作。 出棧相…

異步電機IM-改進的電壓模型磁鏈觀測器學習

導讀&#xff1a;本期文章主要介紹異步電機的改進型電壓模型磁鏈觀測器。傳統純積分形式的積分器在低速區域存在初始值問題和直流偏置問題&#xff0c;所以在實際應用中必須對電壓模型進行改進。本期文章中的對電壓模型改進是借鑒一篇IEEE中的方法。 如果需要文章中對應的仿真…

Apache Dubbo 云原生可觀測性的探索與實踐

作者&#xff1a;宋小生 - 平安壹錢包中間件資深工程師 Dubbo3 可觀測能力速覽 Apache Dubbo3 在云原生可觀測性方面完成重磅升級&#xff0c;使用 Dubbo3 最新版本&#xff0c;你只需要引入 dubbo-spring-boot-observability-starter 依賴&#xff0c;微服務集群即原生具備以…

貪心算法實現找零問題

思路&#xff1a; 使用 貪心算法 的思想 題目&#xff1a; 檸檬水找零 在檸檬水攤上&#xff0c;每一杯檸檬水的售價為5美元。顧客排隊購買你的產品,一次購買一杯。 每位顧客只買一杯檸檬水,然后向你付5美元、10美元或20美元。必須給每個顧客正確找零 注意,一開始你手頭沒有任何…

PSP - 基于擴散生成模型預測蛋白質結構 EigenFold 算法與環境配置

歡迎關注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132357976 Paper: EigenFold: Generative Protein Structure Prediction with Diffusion Models EigenFold 是用于蛋白質結構預測的擴散生成模型…

使用深度學習實現的圖像偽造檢測: 一個Python畢業項目指南

1. 引言 在當前的數字化時代&#xff0c;圖像處理和偽造技術越來越先進。從影視制作到社交媒體&#xff0c;人們常常與修飾或改變過的圖片打交道。雖然這為創意產業提供了無數機會&#xff0c;但也為不誠實的內容創造者帶來了偽造和篡改圖像的機會。因此&#xff0c;圖像偽造檢…

Selenium手動和自動兩種方式啟動Chrome驅動

1. 自動啟動chrome驅動(已經安裝了Selenium庫和Chrome驅動) 要使用Selenium自動跟隨自帶的Chrome驅動&#xff0c;你需要首先確保你已經安裝了Selenium庫和Chrome驅動。然后&#xff0c;你可以按照以下步驟進行操作&#xff1a; 導入必要的庫&#xff1a; from selenium imp…

【面試八股文】每日一題:談談你對線程的理解

每日一題-Java核心-談談你對線程的理解【面試八股文】 Java線程是Java程序中的執行單元。一個Java程序可以同時運行多個線程&#xff0c;每個線程可以獨立執行不同的任務。線程的執行是并發的&#xff0c;即多個線程可以同時執行。 1. 線程的特點 Java中的線程有如下的特點 輕…

react-native-webview使用postMessage后H5不能監聽問題(iOS和安卓的兼容問題)

/* 監聽rn消息 */ const eventListener nativeEvent > {//解析數據actionType、extraconst {actionType, extra} nativeEvent.data && JSON.parse(nativeEvent.data) || {} } //安卓用document&#xff0c;ios用window window.addEventListener(message, eventLis…

Jenkins-發送郵件配置

在Jenkins構建執行完畢后&#xff0c;需要及時通知相關人員。因此在jenkins中是可以通過郵件通知的。 一、Jenkins自帶的郵件通知功能 找到manage Jenkins->Configure System&#xff0c;進行郵件配置&#xff1a; 2. 配置Jenkins自帶的郵箱信息 完成上面的配置后&#xf…

DiffusionDet: Diffusion Model for Object Detection

DiffusionDet: Diffusion Model for Object Detection 論文概述不同之處整體流程 論文題目&#xff1a;DiffusionDet: Diffusion Model for Object Detection 論文來源&#xff1a;arXiv preprint 2022 論文地址&#xff1a;https://arxiv.org/abs/2211.09788 論文代碼&#xf…

kubesphere 使用流水線對接 sonar

官方文檔&#xff1a;使用圖形編輯面板創建流水線 創建憑證 創建 sonar 憑證 創建 gitlab 憑證 創建流水線 創建流水線&#xff0c;編輯流水線 自定義流水線 拉取代碼 代理選 kubernetes&#xff0c;label 填maven 添加步驟 - git 填寫 git 地址&#xff0c;選…

CSS 背景屬性

前言 背景屬性 屬性說明background-color背景顏色background-image背景圖background-repeat背景圖平鋪方式background-position背景圖位置background-size背景圖縮放background-attachment背景圖固定background背景復合屬性 背景顏色 可以使用background-color屬性來設置背景…

【計算機設計大賽】國賽一等獎項目分享——基于多端融合的化工安全生產監管可視化系統

文章目錄 一、計算機設計大賽國賽一等獎二、項目背景三、項目簡介四、系統架構五、系統功能結構六、項目特色&#xff08;1&#xff09;多端融合&#xff08;2&#xff09;數據可視化&#xff08;3&#xff09;計算機視覺&#xff08;目標檢測&#xff09; 七、系統界面設計&am…