php 正則表達式 ?= ?!是什么意思呢?這個問題我拿出來估計有很多的php程序員說不清楚了,下面我們來為各位介紹一下.
先來看看正則表達式的語法吧。
我們看到,正則表達式中有(?=a)和(?!a)來表示我們是否需要匹配某個東西。
所以我們有需要不匹配某樣東西的時候我們就可以用(?!a)了。比如說我們要匹配不含hello的字符串就可以這樣寫。
^(?!.*hello)
這里.*用來表示hello之前可能有其他的字符,為什么還要加^呢,因為如果不加的話,可能匹配到h之后的這個位置上了。
我們現在就可以解決regex golf上的abba這道題了。這道題是讓我們去匹配不含abba這種形式的單詞,比如abba,anallagmatic就不應該匹配上。所以這道題只需要這樣就可以了。
^(?!.*(.)(.)/2/1)
然后利用不匹配,我們還可以解決prime這道題,這道題是讓我們匹配有素數個x的串,先看正則。
^(?!(xx+)/1+$)
(xx+)是匹配2個及2個以上的x,(xx+)/1+就是匹配重復出現2個及以上的串,所以(xx+)/1+就表示了那些非素數的串,那么素數串就是除去這些非素數串,就是上面這個正則表達式了。
新聞熱點
疑難解答