正規表示式使用的一些技巧

2021-10-05 22:58:10 字數 1832 閱讀 4832

用正規表示式用了10年了,之前的總結一直以word形式,寫的零散總結都放在cnblog上面,特別想總結一下。

中文名稱

名稱<.>非貪婪模式 找到第乙個》 就停止

<.>貪婪模式 直到找到正文的最後乙個》才停止

(?<=(href=")).(?=(">))

匹配以(href=")開頭以(">)結尾的字串,捕獲(儲存)到分組中

(?<=(?:href=")).(?=(?:">))匹配以(href=")開頭以(">)結尾的字串,不捕獲(儲存)到分組中

句法說明

(?:pattern)

非獲取匹配,匹配pattern但不獲取匹配結果,不進行儲存供以後使用。這在使用或字元(|)來組合乙個模式的各個部分是很有用。例如industr(?:y|ies)就是乙個比industry|industries更簡略的表示式。

(?=pattern)

非獲取匹配,正向肯定預查,在任何匹配pattern的字串開始處匹配查詢字串,該匹配不需要獲取供以後使用。例如,windows(?=95|98|nt|2000)能匹配windows2000中的windows,但不能匹配windows3.1中的「windows`。預查不消耗字元,也就是說,在乙個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是從包含預查的字元之後開始。

(?!pattern)

非獲取匹配,正向否定預查,在任何不匹配pattern的字串開始處匹配查詢字串,該匹配不需要獲取供以後使用。例如windows(?!95|98|nt|2000)能匹配「windows3.1」中的windows,但不能匹配windows2000中的windows

(?<=pattern)

非獲取匹配,反向肯定預查,與正向肯定預查類似,只是方向相反。例如,(?<=95|98|nt|2000)windows能匹配2000windows中的windows,但不能匹配3.1windows中的windows

(?

非獲取匹配,反向否定預查,與正向否定預查類似,只是方向相反。例如(?

正規表示式的一些技巧

兩種形式的if then else 形如 regex then else 如果前向斷言匹配成功則必須匹配then部分,否則匹配else部分。四種斷言形式都可以使用。regex then else 正向先行斷言的形式。echo abcdefg perl pe s h b e g 該表示式比較白話的說,...

一些正規表示式

要嚴格的驗證手機號碼,必須先要清楚現在已經開放了哪些數字開頭的號碼段,目前國內號碼段分配如下 移動 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 手...