兩種形式的if then else
形如(?(?=regex)then|else) ,如果前向斷言匹配成功則必須匹配then部分,否則匹配else部分。四種斷言形式都可以使用。
(?(?=regex)then|else) 正向先行斷言的形式。
//echo "abcdefg" |perl -pe 's#(?(?=h)b|e)#_#g'
該表示式比較白話的說,就是如果乙個字元後面是regex,那麼匹配後面是then的,否則匹配後面是else的,這就導致這種形式意義不大,該位置後面為regex的時候,then如果=regex才匹配,否則匹配else。
(?(?!regex) then|else) 負向先行斷言的形式
這個該表示式和上面類似,意義不大。
(?(?<=regex)then|else) 正向後行斷言的形式
該表示式,如果前面是regex的話,匹配後面的then,否則匹配else
(?(?<=re)g|t) //string regrettable
匹配re後面的g,但是不匹配re後面的t,但是匹配不是re後面的t
(?(?//echo "repeat rescure" |perl -pe 's#(re)(?(1)p|c)#_#'
前後斷言
向前看去
是 5: (?=5)
不是5: (?!5)
向後看去
是 5: (?<=5)
不是5: (?
正規表示式使用的一些技巧
用正規表示式用了10年了,之前的總結一直以word形式,寫的零散總結都放在cnblog上面,特別想總結一下。中文名稱 名稱 非貪婪模式 找到第乙個 就停止 貪婪模式 直到找到正文的最後乙個 才停止 href 匹配以 href 開頭 以 結尾的字串,捕獲 儲存 到分組中 href 匹配以 href 開...
一些正規表示式
要嚴格的驗證手機號碼,必須先要清楚現在已經開放了哪些數字開頭的號碼段,目前國內號碼段分配如下 移動 134 135 136 137 138 139 150 151 157 td 158 159 187 188 聯通 130 131 132 152 155 156 185 186 電信 133 153...
一些正規表示式
判斷是否是正整數if isnan paramvalue paramvalue 0 else 金額的格式判斷輸入金額的要求 整數字最多十位,小數為最多為兩位,可以無小數字 0 9 1 9 0 9 0 9 function checkmoney str 0 9 if re.test str else 手...