3 回答

TA貢獻(xiàn)1847條經(jīng)驗 獲得超11個贊
否定的前瞻表示,在此位置,以下正則表達(dá)式無法匹配。
讓我們舉一個簡化的例子:
a(?!b(?!c))
a Match: (?!b) succeeds
ac Match: (?!b) succeeds
ab No match: (?!b(?!c)) fails
abe No match: (?!b(?!c)) fails
abc Match: (?!b(?!c)) succeeds
最后一個例子是雙重否定:它允許b后面跟一個c。嵌套的負(fù)前瞻變?yōu)檎罢埃篶應(yīng)該存在。
在每個示例中,僅a匹配。前瞻僅是一個條件,不會添加到匹配的文本中。

TA貢獻(xiàn)1809條經(jīng)驗 獲得超8個贊
環(huán)顧四周可以嵌套。
所以這個正則表達(dá)式匹配“Drupal的6.14 /”是不是后面是“地王” 不跟著“/ all”或“/默認(rèn)”。
令人困惑?使用不同的詞,我們可以說它與“ drupal-6.14 /”匹配,然后不跟“ sites”,除非再跟“ / all”或“ / default”

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊
如果您這樣修改正則表達(dá)式:
drupal-6.14/(?=sites(?!/all|/default)).*
^^
...然后,它將匹配所有包含的內(nèi)容drupal-6.14/,sites然后是或以外的其他 所有內(nèi)容。例如:/all/default
drupal-6.14/sites/foo
drupal-6.14/sites/bar
drupal-6.14/sitesfoo42
drupal-6.14/sitesall
更改?=為?!匹配您的原始正則表達(dá)式將簡單地抵消那些匹配:
drupal-6.14/(?!sites(?!/all|/default)).*
^^
所以,這只是意味著drupal-6.14/現(xiàn)在不能被跟隨sites,隨后以外的任何 /all或/default。因此,現(xiàn)在,這些輸入將滿足正則表達(dá)式:
drupal-6.14/sites/all
drupal-6.14/sites/default
drupal-6.14/sites/all42
但是,從其他一些答案(可能還有您的問題)中可能看不出來的是,您的正則表達(dá)式也將允許其他輸入,drupal-6.14/后面緊跟其他內(nèi)容sites。例如:
drupal-6.14/foo
drupal-6.14/xsites
結(jié)論:因此,您的正則表達(dá)式基本上說要包括其名稱以或以外的其他子目錄開頭的所有子目錄。drupal-6.14 sitesalldefault
- 3 回答
- 0 關(guān)注
- 608 瀏覽
添加回答
舉報