正規表示式高階用法

2021-10-08 11:50:53 字數 1778 閱讀 2004

1.獲取匹配

獲取這個匹配結果:可以使用 $num 代替這個匹配的結果,可以用來實現替換功能。

//獲取這個匹配結果

(pattern)

2.非獲取匹配
//和獲取匹配相反,不獲取匹配結果(?

:pattern)

以下四種預查方式都是非獲取匹配

1.正向肯定預查

與它前面的匹配表示式銜接,並通過它自己的表示式篩選前面的匹配結果

表示式:(?=pattern)

//可以匹配 windows2000 中的windows

//無法匹配 windows98

windows(?

=2000

)

2.正想否定預查

與它前面的匹配表示式銜接,並通過它自己的表示式反向篩選前面的匹配結果

表示式:(?!pattern)

//可以匹配 windows98 或者 windows3.1 中的windows

//無法匹配 windows2000

windows(?

!2000

)

3.反向肯定預查

與它後面的匹配表示式銜接,並通過它自己的表示式篩選前面的匹配結果

表示式:(?<=pattern)

//可以匹配 2000windows 中的windows

//無法匹配 98windows(?

<=

2000

)windows

4.反向否定預查

與它後面的匹配表示式銜接,並通過它自己的表示式反向篩選前面的匹配結果

表示式:(?

//可以匹配 98windows 或 3.1windows 中的windows

//無法匹配 2000windows(?

<

!2000

)windows

//使中括號內的第一列數字和第二列數字位置互換

//例1:[01

02] #hi[03

04] #hello[05

06] #wrold

//替換效果:[02

01] #hi[04

03] #hello[06

05] #wrold

//正則匹配式:

/** * 一共有四個括號內的正則式,不過僅有第二和第三個是獲取匹配,

* 所以替換式使用符號$1(代表第一列)、$2(代表第二列)

*/(?<=\[)(

[0-9

])\s([

0-9]

)(?=\]

)//替換匹配式:

$2 $1

//使 『#』 號後面的單詞加上相同的字尾

//例2:[01

02] #hi[03

04] #hello[05

06] #wrold

//替換效果:[01

02] #hi gloep[03

04] #hello gloep[05

06] #wrold gloep

//正則匹配式:

/** * 一共有兩個括號內的正則式,不過僅有第乙個是獲取匹配

* 所以替換式使用符號 『$1』 代指匹配到的單詞

*/(?<=#)

([a-z]+)

//替換匹配式:

$1 gloep

正規表示式高階

或 的小細節 替換匹配 任一側最大的表示式 2.正規表示式和相應編碼 3.正規表示式引擎 舉例簡單說明nfa與dfa工作的區別 比如有字串this is yansen s blog,正規表示式為 ya msen nsen nsem 不要在乎表示式怎麼樣,這裡只是為了說明引擎間的工作區別 nfa工作方...

正規表示式高階

捕獲組就是把正規表示式中子表示式匹配的內容,儲存到記憶體中以數字編號或手動命名的組裡,以供後面引用。表示式 說明 expression 普通捕獲組,將子表示式expression匹配的內容儲存到以數字編號的組裡 expression 命名捕獲組,將子表示式expression匹配的內容儲存到以nam...

sscanf的高階用法 正規表示式

sscanf 從乙個字串中讀進與指定格式相符的資料。函式原型 int sscanf const char const char int sscanf const char buffer,const char format,argument buffer儲存的資料 format格式控制字串 argum...