字符搜索正則表達式語法詳解

工作之余抽點時間出來寫寫博文,希望對新接觸的朋友有幫助。明天在這里和大家一起學習一下字符搜索

????作為一個術技,時常會到碰正則表達式相干的西東,很多時候忙著趕進度,都是在網上找一個可以決解的正則表達式,或是換另外一種法方實現,直一沒有系統地解了正則表達式,明天終究有時間又有閑情來具體地看看正則表達式的語法,不求成為手高,最起碼到碰問題能用正則表達式決解,或是拿到一個正則表達式,起碼可以看懂面里的意思......

????

“正則表達式”描述在索搜文本正文時要匹配的一個或多個字符串。該表達式可用作一個將字符模式與要索搜的字符串相匹配的模板。

正則表達式含包一般字符(例如,a 到 z 之間的母字)和特殊字符(稱為“元字符”)。

????

特殊字符

下表含包了單字符元字符的表列以及它們在正則表達式中的為行。

明說

若要匹配這些特殊字符之一,必須首先義轉字符,即,在字符面后加反斜杠字符 (\)。例如,若要索搜“+”文本字符,可應用表達式“\+”。

元字符

為行

示例

*

零次或多次匹配面后的字符或子表達式。

等效于?{0,}

zo*?與“z”和“zoo”匹配。

+

一次或多次匹配面后的字符或子表達式。

等效于?{1,}

zo+?與“zo”和“zoo”匹配,但與“z”不匹配。

?

零次或一次匹配面后的字符或子表達式。

等效于?{0,1}

當 ?緊隨任何其他限定符(*、+、?、{n}、{n,} 或 {n,m})后之時,匹配模式非是婪貪的。非婪貪模式匹配索搜到的、盡可能少的字符串,而認默的婪貪模式匹配索搜到的、盡可能多的字符串。

zo??與“z”和“zo”匹配,但與“zoo”不匹配。

o+??只與“oooo”中的單個“o”匹配,而?o+?與全部“o”匹配。

do(es)??與“do”或“does”中的“do”匹配。

^

匹配索搜字符串開始的位置。如果標記中含包?m(多行索搜)字符,^ 還將匹配 \n 或 \r 面后的位置。

如果將 ^ 用作括號表達式中的第一個字符,則會對字符集求反。

^\d{3}?與索搜字符串開始處的 3 個數字匹配。

[^abc]?與除 a、b 和 c 外以的任何字符匹配。

$

匹配索搜字符串尾結的位置。如果標記中含包?m(多行索搜)字符,^ 還將匹配 \n 或 \r 面后的位置。

\d{3}$?與索搜字符串尾結處的 3 個數字匹配。

.

匹配除換行符 \n 外以的任何單個字符。若要匹配含包 \n 在內的恣意字符,請應用諸如?[\s\S]?之類的模式。

a.c?與“abc”、“a1c”和“a-c”匹配。

[]

標記括號表達式的開始和尾結。

[1-4]?與“1”、“2”、“3”或“4”匹配。[^aAeEiIoOuU]?與任何非元音字符匹配。

{}

標記限定符表達式的開始和尾結。

a{2,3}?與“aa”和“aaa”匹配。

()

標記子表達式的開始和尾結。可以存保子表達式以備來將之用。

A(\d)?與“A0”至“A9”匹配。存保該數字以備來將之用。

|

示指在兩個或多個項之間停止擇選。

z|food?與“z”或“food”匹配。(z|f)ood?與“zood”或“food”匹配。

/

表現 JScript 中的文本正則表達式模式的開始或尾結。在第二個“/”后添加單字符標記可以指定索搜為行。

/abc/gi?是與“abc”匹配的 JScript 文本正則表達式。g(全局)標記指定查找模式的全部匹配項,i(略忽大小寫)標記使索搜不區分大小寫。

\

將下一字符標記為特殊字符、文本、反向引用或八進制義轉符。

\n?與換行符匹配。\(?與“(”匹配。\\?與“\”匹配。

大多數特殊字符在括號表達式內出現時得到它們的意思,并表現一般字符。有關更多息信,請拜見匹配字符的表列中的“括號表達式中的字符”。

每日一道理
試試看——不是像企鵝那樣靜靜的站在海邊,翹首企盼機會的來臨,而是如蒼鷹一般不停的翻飛盤旋,執著的尋求。 試試看——不是面對峰回路轉、雜草叢生的前途枉自嗟嘆,而是披荊斬棘,舉步探索。 試試看——不是拘泥于命運的禁錮,聽憑命運的擺布,而是奮力敲擊其神秘的門扉,使之洞開一個新的天地。微笑著,去唱生活的歌謠。

????

元字符

下表含包了多字符元字符的表列以及它們在正則表達式中的為行。

元字符

為行

示例

\b

與一個字邊界匹配;即字與空格間的位置。

er\b?與“never”中的“er”匹配,但與“verb”中的“er”不匹配。

\B

非邊界字匹配。

er\B?與“verb”中的“er”匹配,但與“never”中的“er”不匹配。

\d

數字字符匹配。

等效于?[0-9]

在索搜字符串“12 345”中,\d{2}?與“12”和“34”匹配。\d?與“1”、“2”、“3”、“4”和“5”匹配。

\D

非數字字符匹配。

等效于?[^0-9]

\D+?與“abc123 def”中的“abc”和“def”匹配。

\w

與以下恣意字符匹配:A-Z、a-z、0-9 和下劃線。

等效于?[A-Za-z0-9_]

在索搜字符串“The quick brown fox…”中,\w+?與“The”、“quick”、“brown”和“fox”匹配。

\W

與除 A-Z、a-z、0-9 和下劃線外以的恣意字符匹配。

等效于?[^A-Za-z0-9_]

在索搜字符串“The quick brown fox…”中,\W+?與“…”和全部空格匹配。

[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?非是負數整。

*?與?{0,}?等相。

+?與?{1,}?等相。

o{2,}?與“Bob”中的“o”不匹配,但與“foooood”中的全部“o”匹配。

{n,m}

匹配最少?n?次,多至?m?次。n?和?m?非是負數整,其中?n?<=?m逗號和數字之間不能有空格。

??與?{0,1}?等相。

在索搜字符串“1234567”中,\d{1,3}?與“123”、“456”和“7”匹配。

(模式)

模式?匹配并存保匹配項。您可以從由 JScript 中的?exec Method回返的數組素元中檢索存保的匹配項。若要匹配括號字符 ( ),請應用“\(”或者“\)”。

(Chapter|Section) [1-9]?與“Chapter 5”匹配,存保“Chapter”以備來將之用。

(?:模式)

模式?匹配,但不存保匹配項;即不會存儲匹配項以備來將之用。這對于用“or”字符 (|) 組合模式部件的況情很有效。

industr(?:y|ies)?與?industry|industries?等相。

(?=模式)

極積的測預先行。找到一個匹配項后,將在匹配文本之前開始索搜下一個匹配項。不會存保匹配項以備來將之用。

^(?=.*\d).{4,8}$?對密碼應用以下制約:其長度必須介于 4 到 8 個字符之間,并且必須最少含包一個數字。

在該模式中,.*\d?查找后跟有數字的恣意多個字符。對于索搜字符串“abc3qr”,這與“abc3”匹配。

從該匹配項之前(而不是后之)開始,.{4,8}?與含包 4-8 個字符的字符串匹配。這與“abc3qr”匹配。

^?和?$?指定索搜字符串的開始和結束位置。這將在索搜字符串含包匹配字符外以的任何字符時阻撓匹配。

(?!模式)

極消的測預先行。匹配與模式?不匹配的索搜字符串。找到一個匹配項后,將在匹配文本之前開始索搜下一個匹配項。不會存保匹配項以備來將之用。

\b(?!th)\w+\b?與不以“th”掃尾的單詞匹配。

在該模式中,\b?與一個字邊界匹配。對于索搜字符串“ quick ”,這與第一個空格匹配。(?!th)?與非“th”字符串匹配。這與“qu”匹配。

從該匹配項開始,\w+?與一個字匹配。這與“quick”匹配。

\cx

匹配?x?示指的控制字符。x?的值必須在 A-Z 或 a-z 范圍內。如果不是這樣,則定假 c 就是文本“c”字符本身。

\cM?與 Ctrl+M 或一個回車符匹配。

\xn

匹配?n,此處的?n?是一個十六進制義轉碼。十六進制義轉碼必須恰好是兩位數長。答應在正則表達式中應用 ASCII 代碼。

\x41?與“A”匹配。\x041?等效于后跟有“1”的“\x04”(因為?n?必須恰好是兩位數)。

\num

匹配?num,此處的?num?是一個正數整。這是對已存保的匹配項的引用。

(.)\1?與兩個連續的同相字符匹配。

\n

標識一個八進制義轉碼或反向引用。如果 \n?面后最少有?n?個捕獲子表達式,那么?n?是反向引用。否則,如果?n?是八進制數 (0-7),那么?n?是八進制義轉碼。

(\d)\1?與兩個連續的同相數字匹配。

\nm

標識一個八進制義轉碼或反向引用。如果 \nm?面后最少有?nm?個捕獲子表達式,那么?nm?是反向引用。如果 \nm?面后最少有?n?個捕獲子表達式,則?n?是反向引用,面后跟有文本?m如果上述況情都不存在,當?n?和?m?是八進制數字 (0-7) 時,\nm?匹配八進制義轉碼?nm

\11?與制表符匹配。

\nml

當?n?是八進制數字 (0-3),m?和?l?是八進制數字 (0-7) 時,匹配八進制義轉碼?nml

\011?與制表符匹配。

\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

Tab 字符。

\x09?和?\cI

\v

垂直制表符。

\x0b?和?\cK

????

優先級序順

正則表達式的算計式方與算術表達式非常相似;即從左到右停止算計,并循遵優先級序順。

下表按從高到低的序順含包了正則表達式運算符的優先級序順。

運算符

明說

\

義轉符

(), (?:), (?=), []

括號和中括號

*、+、?、{n}、{n,}、{n,m}

限定符

^、$、\任何元字符

定位點和列序

|

替換

字符擁有高于替換運算符的優先級,例如,答應“m|food”匹配“m”或“food”。

文章結束給大家分享下程序員的一些笑話語錄: 祝大家在以后的日子里. 男生象Oracle般健壯; 女生象win7般漂亮; 桃花運象IE中毒般頻繁; 錢包如Gmail容量般壯大, 升職速度趕上微軟打補丁 , 追女朋友像木馬一樣猖獗, 生活像重裝電腦后一樣幸福, 寫程序敲代碼和聊天一樣有**。

轉載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/09/3069863.html

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

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

相關文章

gRPC之grpc resolver

1、grpc resolver 當我們的服務剛剛成型時&#xff0c;可能一個服務只有一臺實例&#xff0c;這時候client要建立grpc連接很簡單&#xff0c;只需要指定server 的ip就可以了。但是&#xff0c;當服務成熟了&#xff0c;業務量大了&#xff0c;這個時候&#xff0c;一個實例就…

linux測試固態硬盤讀寫速度,在 Linux 上檢測 IDE/SATA SSD 硬盤的傳輸速度

你知道你的硬盤在 Linux 下傳輸有多快嗎&#xff1f;不打開電腦的機箱或者機柜&#xff0c;你知道它運行在 SATA I (150 MB/s) 、 SATA II (300 MB/s) 還是 SATA III (6.0Gb/s) 呢&#xff1f;你能夠使用 hdparm 和 dd 命令來檢測你的硬盤速度。它為各種硬盤的 ioctls 提供了命…

stl標準模板庫_C ++標準模板庫(STL)中的array :: fill()

stl標準模板庫fill() is a member function of "array container", which sets a given value to all array elements. It can also be used to set the value to other of containers also. Value type should be same as container type. fill()是“數組容器”的成…

Opencv——批量處理同一文件夾下的圖片(解決savedfilename = dest + filenames[i].substr(len)問題)

文章目錄前言一、完整代碼二、實現效果前言 第一份代碼實現了批量修改同一文件夾下圖片的尺寸&#xff0c;有其他需求時僅需修改處理部分的代碼以及文件夾路徑。 第二份代碼實現了批量截取同一文件夾下每張圖片的ROI區域作為結果保存&#xff0c;注意截取后按下enter鍵才會跳到…

linux統計文件目錄及其文件個數

linux下統計目錄及其子目錄的文件的個數 查看某目錄下文件的個數 ls -l |grep "^-"|wc -l或find ./company -type f | wc -l 查看某目錄下文件的個數&#xff0c;包括子目錄里的。 ls -lR|grep "^-"|wc -l查看某文件夾下目錄的個數&#xff0c;包括子目錄里…

處理文件、攝像頭和圖形用戶界面

1、基本I/O腳本 1.1 讀/寫圖像文件 import numpy import cv2#利用二維Numpy數組簡單創建一個黑色的正方形圖像 img numpy.zeros((3,3),dtypenumpy.uint8) img #結果為&#xff1a;array([[0, 0, 0],[0, 0, 0],[0, 0, 0]], dtypeuint8)img.shape#結果為&#xff1a;(3, 3)###…

linux桌面天氣,Ubuntu 14.10中安裝和配置天氣應用

對于操作系統平臺而言&#xff0c;有各種小插件功能方便用戶日常應用。在Ubuntu桌面中提供天氣信息的功能&#xff0c;可以使用Unity Dash和桌面應用來獲得相關信息&#xff0c;比如Typhoon。但對于用戶而言&#xff0c;可以提供快速查詢天氣狀況和溫度數據&#xff0c;并且只需…

使用ACE_SOCK_SEQPACK_Association獲取socket連接的本地及遠程IP端口信息

int connect(const std::string& ip, int port){ ACE_INET_Addr portAddr(port, ip.c_str()); ACE_SOCK_Connector connector; ACE_SOCK_Stream peer; if (-1 connector.connect(peer, portAddr)) { std::cout << "連接服務器(" <&…

linux批處理操作系統_批處理操作系統

linux批處理操作系統批處理操作系統 (Batch Processing Operating System) When we are working in an environment there is a restriction of making use of computer resources effectively and improvement in the programmers output. When we are working with tapes a l…

STL容器及其簡單應用(stack、priority_queue、vector、deuqe、list、map/multimap、set/multiset)

目錄前言【1】stack操作以及應用stack的幾個核心接口利用stack完成進制轉換【2】priority_queue操作以及應用priority_queue的幾個核心接口利用priority_queue完成合并果子問題【3】vector操作以及應用vector的幾個核心接口利用vector完成隨機排序【4】deuqe(雙向隊列)操作以及…

Android SAX API: XmlResourceParser及其擴展應用

XmlResourceParser繼承了2個接口&#xff1a;AttributeSet和XmlPullParser。其中XmlPullParser定義了Android SAX框架。跟Java 的SAX API相比&#xff0c;XmlPullParser令人難以置信地簡單。 一、使用XmlResourceParser讀取資源束中的xml 資源束是應用程序編譯后的應用程序包…

linux fdisk 磁盤空間使用率,linux查看磁盤剩余空間以及cpu使用情況

1、查看CPU個數cat /proc/cpuinfo | grep "physical id" | uniqtop可以實時的查看cpu的使用情況2、查看CPU核數cat /proc/cpuinfo | grep "cpu cores" | uniq3、查看CPU型號cat /proc/cpuinfo | grep model name |uniq4、查看內存cat /proc/meminfo | grep…

c語言 函數的參數傳遞示例_restder()函數,帶有C ++中的示例

c語言 函數的參數傳遞示例C restder()函數 (C remainder() function) remainder() function is a library function of cmath header, it is used to calculate the remainder (IEC 60559), it accepts two parameters (numerator and denominator) and returns the remainder…

jquery validation-jquery的驗證框架 詳解(1)

jquery validation驗證框架是一款非常優秀的客戶端數據驗證框架。我們在日常的項目中都會應用得到。今天開始我們會分兩到三個個階段 詳細的了解這款插件 至于這款插件是多么的優秀&#xff0c;怎么個描述法 我這里就不詳細述說。大家可以在接下來的時間里接觸并且感覺它的強大…

已知一個摻雜了多個數字字符的中文名拼音,去掉所有數字字符之后,形式為“名”+空格+“姓”;并且名和姓的首字母大寫,其他小寫,要求輸出姓名全拼,且全為小寫。(后附詳細樣例說明)

已知一個摻雜了多個數字字符的中文名拼音&#xff0c;去掉所有數字字符之后&#xff0c;形式為“名”空格“姓”&#xff1b;并且名和姓的首字母大寫&#xff0c;其他小寫&#xff0c;要求輸出姓名全拼&#xff0c;且全為小寫。&#xff08;后附詳細樣例說明&#xff09; 【輸入…

【視覺項目】【day2】8.21號實驗記錄(手機固定高度15cm拍攝+直方圖均衡化+模板匹配,模板12個,測試28個,效果十分差)

目錄均衡化代碼模板圖片按照大小排序總代碼測試效果新思路由于模板匹配是像素之間的比對&#xff0c;所以不同光照下的像素灰度值也會不同 所以在比對之前&#xff0c;我們需要對測試圖和模板圖進行直方圖均衡化&#xff0c;這一步可以先實現。 今天將采用批量處理的方式&#…

c語言 函數的參數傳遞示例_isgreater()函數以及C ++中的示例

c語言 函數的參數傳遞示例C isgreater()函數 (C isgreater() function) isgreater() function is a library function of cmath header, it is used to check whether the given first value is greater than the second value. It accepts two values (float, double or long…

在一個風景秀麗的小鎮,一天早上,有N名晨跑愛好者(編號1~N)沿著優雅的江邊景觀道朝同一方向進行晨跑

【問題描述】 在一個風景秀麗的小鎮&#xff0c;一天早上&#xff0c;有N名晨跑愛好者(編號1~N)沿著優雅的江邊景觀道朝同一方向進行晨跑&#xff0c;第i名跑者從位置si處起跑&#xff0c;且其速度為Vi。換句話說&#xff0c;對所有的實數t≥0&#xff0c;在時刻t時第i名跑者的…

linux內核測試,Linux內核測試的生命周期

內核持續集成(CKI)項目旨在防止錯誤進入 Linux 內核。在 Linux 內核的持續集成測試 一文中&#xff0c;我介紹了 內核持續集成Continuous Kernel Integration(CKI)項目及其使命&#xff1a;改變內核開發人員和維護人員的工作方式。本文深入探討了該項目的某些技術方面&#xff…

Linux下動態庫使用小結

1. 靜態庫和動態庫的基本概念 靜態庫&#xff0c;是在可執行程序連接時就已經加入到執行碼中&#xff0c;在物理上成為執行程序的一部分&#xff1b;使用靜態庫編譯的程序運行時無需該庫文件支持&#xff0c;哪里都可以用&#xff0c;但是生成的可執行文件較大。動態庫&#xf…