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...