正規表示式學習筆記(1)(字元匹配)

2021-08-27 11:30:04 字數 4404 閱讀 5529

目錄簡介

常用字元及其說明

常用字元匹配

空白元字元

重複匹配

基礎高階

正規表示式(regular expression,簡稱regex)是一些用來匹配和處理文字的字串。正規表示式語言並不是一種完備的語言,他是內置於其他語或軟體產品裡的「迷你」語言。正規表示式的使用無非兩種情況:一種是查詢特定的資訊(搜尋),另一種是查詢並編輯特定的資訊(替換)。學習正規表示式對我們理解爬蟲很有幫助。本文是學習美國知名技術作家ben forta編寫的《sam teach yourself regular expression in 10 minutes》的中文翻譯版《正規表示式必知必會》的學習筆記。書中提供的正規表示式測試工具的鏈結如下:

字元說明

用法舉例

.可以匹配任何單個的字元(除了換行符)

用來定義字元集合,字元集合中可以使用連字元-來簡化字元區間的定義, 連字元按照ascii碼順序來計算區間

[aa]表示匹配文字中的a或a一次

[0123456789abcd]可簡化為[0-9a-d]

^取非字元 它作用於給定的字元集合裡所有字元,而不是緊跟其後的乙個字元

[^0-9a-z]表示不匹配數字字元和小寫字母字元

\轉義字元,任何乙個元字元都可以通過在其前加乙個\將其轉義,配對的元字元不用做元字元時必須轉義如,有時候喜歡把轉義字元加上字元集合 [\n]增加**的可讀性

\.表示.本身

\\表示\本身

用法示例:

匹配文字

正規表示式

匹配結果

說明cat cap cam cat

ca.catcapcam cat

匹配ca連線任意乙個字元的字串

cat cap cam cat

[cc]a.

cat cap cam cat匹配時c不分大小寫,即在匹配時選取c和c中的乙個

a b c 1 2 3 4 5

[^1-4]

a b c1 2 3 45匹配時不匹配1-4這幾個數字

cat125

\[\]

cat125

將[ 和]轉義,否則不能夠匹配到

正規表示式匹配物件等價表示式

\d數字[0-9]

\d非數字[^0-9]

\w字母和數字或下劃線[a-za-z0-9_]

\w非字母和數字或下劃線[^a-za-z0-9_]

\s空白字元[\f\n\r\t\v]  ([\b] 除外)

\s非空白字元[^\f\n\r\t\v]

用法示例:

匹配文字

正規表示式

匹配結果

說明abc123def

\d\d\d

abc123def

匹配三個連續的數字字元

abc123def

\d\d\d

abc123def匹配三個連續的不是數字的字元

abc-+defg

\w\w\w

abc_+defg匹配四個連續的字母、數字或下劃線

abc_+defg

\wabc_+defg

匹配乙個非字母和數字或下劃線

abc def gh

\sabcdef gh

匹配到空格字元(這裡沒法顯示)

abc def gh

\s\s\s

abc defgh

匹配三個連續的非空白字元

正規表示式

匹配物件

\n換行符

\r回車符

\t製表符(tab)

\v垂直製表符

\f換頁符

[\b]

回退鍵 backspace

\r\n

匹配乙個 回車+換行  組合 (windows系統下)

元字元說明

用法舉例及說明

+匹配至少乙個或者多個字元,給字元或者字元集合加上+的字尾(放在字元集合的後面),表示匹配同乙個字元的多次重複

\w+     表示多次(至少一次)匹配字母和數字或下劃線

[01]+  表示多次匹配(至少一次)0或1

*匹配乙個字元連續出現零次或多次的情況

用法同+,但不同的是匹配的字元可有可無,可以理解為在*前面的字元是可選的

匹配乙個字元的零次或者一次出現 

https?   表示s可以出現0或1次,它的匹配物件是https或http

匹配文字

正規表示式

匹配結果

說明abc+123@345

\d+abc+123@345匹配多個(至少乙個)連續的數字字元

*用法同+,不同的就是匹配的字元可以不出現

s後加?表示s可以出現0或1次

注:[0-9+]表示數字0-9和+的構成的字元集合(類似的還有.)。即在字元集合中,+表示加號本身,而不是重複匹配的元字元。

匹配重複次數

如果想給匹配的重複次數設定乙個精確值,在{}加上確定的數字   

匹配文字

正規表示式

等價表示式

匹配結果

說明abc+123@345

\d\d\d\d

abc+123@345表示模式裡前乙個字元或字元集合(這裡是數字)必須出現3次才算是乙個匹配

設定區間

匹配文字

舉例匹配結果

說明abc+12@3345-245

\dabc+12@3345-245表示數字字元至少重複兩次,最多重複四次才算是乙個匹配

abc+12@3345-245

\dabc+12@3345-245表示數字字元至少重複3次才算是乙個匹配

貪婪型懶惰型

貪婪型的元字元,它們在匹配時往往是多多益善。

懶惰型(非貪婪型)元字元是在貪婪型其後加上?

貪婪型元字元

懶惰型元字元

**?

++?

?

用法示例:

型別匹配文字

正規表示式

匹配結果

說明貪婪型

andand

.*盡可能多地匹配,因此匹配到了第二個

懶惰型and

and

*盡可能少地匹配,因此匹配到了第乙個

正規表示式字元匹配

普通字元由所有那些未顯式指定為元字元的列印和非列印字元組成。這包括所有的大寫和小寫字母字元,所有數字,所有標點符號以及一些符號。最簡單的正規表示式是乙個單獨的普通字元,可以匹配所搜尋字串中的該字元本身。例如,單字元模式 a 可以匹配所搜尋字串中任何位置出現的字母 a 這裡有一些單字元正規表示式模式的...

shell學習2 正規表示式(一) 字元匹配

正規表示式使用場景 測試字串內的模式 例如,資料驗證 測試輸入字串,以檢視字串內是否出現 號碼模式或信用卡號碼模式 替換文字 識別文件中的特定文字,完全刪除該文字或用其他文字替換它 基於模式匹配從字串中提取子字串 查詢文件內或輸入域內特定的文字 正規表示式詳細學習資料見鏈結 範圍表示法 用連字元 表...

正規表示式學習之字元匹配

給定的字串是否符合正規表示式的過濾邏輯 稱作 匹配 可以通過正規表示式,從字串中獲取我們想要的特定部分。可以看出,正規表示式無論要實現過濾還是提取的功能,最基本的都是要實現匹配,當然一般就是指字元的匹配了。首先說說第乙個轉義符 顧名思義就是將原來符號的意思進行了轉換,新增之後從而可以表達其他的意思,...