第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達(dá)式負(fù)前瞻

正則表達(dá)式負(fù)前瞻

在我的主目錄中,我有一個包含Drupal平臺的文件夾drupal-6.14。在此目錄中,我使用以下命令:find drupal-6.14 -type f -iname '*' | grep -P 'drupal-6.14/(?!sites(?!/all|/default)).*' | xargs tar -czf drupal-6.14.tar.gz該命令的作用是gzip壓縮drupal-6.14文件夾,不包括drupal-6.14 / sites /的 所有子文件夾,但site / all和sites / default除外。我的問題是關(guān)于正則表達(dá)式的:grep -P 'drupal-6.14/(?!sites(?!/all|/default)).*'該表達(dá)式可以排除我要排除的所有文件夾,但是我不太明白為什么。使用正則表達(dá)式匹配所有字符串,但不包含子模式x的字符串除外。或者換句話說,否定子模式。我(認(rèn)為)我知道解決這些問題的一般策略是使用否定先行,但我從未完全滿意地理解過分積極和消極的行事方式。這些年來,我已經(jīng)閱讀了許多網(wǎng)站。PHP和Python regex手冊以及其他頁面,例如http://www.regular-expressions.info/lookaround.html等,但是我對它們從未真正有過深刻的了解。有人可以解釋這是如何工作的,也許可以提供一些類似的例子來做類似的事情?-更新一:關(guān)于Andomar的回應(yīng):雙重否定前瞻能否更簡潔地表達(dá)為單個肯定前瞻性陳述:即是:'drupal-6.14/(?!sites(?!/all|/default)).*'相當(dāng)于:'drupal-6.14/(?=sites(?:/all|/default)).*'???-更新二:根據(jù)@andomar和@alan moore-您不能將雙負(fù)前瞻換為正前瞻。
查看完整描述

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匹配。前瞻僅是一個條件,不會添加到匹配的文本中。


查看完整回答
反對 回復(fù) 2019-11-30
?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗 獲得超8個贊

環(huán)顧四周可以嵌套。


所以這個正則表達(dá)式匹配“Drupal的6.14 /”是不是后面是“地王” 不跟著“/ all”或“/默認(rèn)”。


令人困惑?使用不同的詞,我們可以說它與“ drupal-6.14 /”匹配,然后不跟“ sites”,除非再跟“ / all”或“ / default”


查看完整回答
反對 回復(fù) 2019-11-30
?
慕虎7371278

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


查看完整回答
反對 回復(fù) 2019-11-30
  • 3 回答
  • 0 關(guān)注
  • 608 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號