個人博文地址: https://www.luoyangfu.com/art...
最近有一個需求,要求是判斷某個字符串不以什麼開頭。而後就開始探索這個不以什麼開頭和不易什麼結尾的正則怎麼寫,why?正則表達式
這裏須要提一個概念叫 否認式前項匹配
這個東東。spa
根據匹配的字符序列後面存在一個特定的字符序列
或者不存在一個特定的序列
來決定是否匹配。對於向前匹配,出如今指定項後面的字符序列不會被正則表達式返回。.net
這裏說後面存在一個特定字符序列, 也稱之爲確定式向前查找
不存在一個特定的序列,也稱之爲否認式向前查找
這兩個概念後續再深刻
開始解決這個問題不以某字符串開頭:code
^(?!str)
這裏使用了下面幾個元符號:blog
^
判斷是不是開頭?!
這裏是否認向前查詢示例:rem
/^(?!test).*/
這裏要說一個概念叫 否認式向後匹配
,前面說了向前匹配,想後匹配呢?字符串
一個要匹配的字符串序列前面有或者沒有指定的字符串序列get
這裏有指定字符串序列也叫確定式向後匹配
這裏沒有指定字符串序列也叫否認式向後匹配
這兩個概念後續深刻
解決不以某字符串結尾:it
(?<!str)$
這裏用了以下幾個符號:class
?<!
否認式向後查詢$
是否結尾示例:
不以 end 結尾
/.*(?<!end)$/
?
元字符用法(?:str) 非捕獲組 (?=str) 確定式向前查找 (?!str) 否認式向前查找 (?<=str) 確定式向後查找 (?<!str) 否認式向後查找
參考地址:
https://blog.csdn.net/LinBili...
https://blog.csdn.net/libingx...