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

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

通過正則表達式在Notepad ++中進行替換時如何使用條件

通過正則表達式在Notepad ++中進行替換時如何使用條件

考慮以下正則表達式:([a-zA-Z])([a-zA-Z]?)/([a-zA-Z])([a-zA-Z]?)如果文本為:a/b 捕獲組將為:/1  'a'/2  ''/3  'b'/4  ''如果文本是:aa/b 捕獲組將是:/1  'a'/2  'a'/3  'b'/4  ''假設(shè)我想在Notepad ++中查找并替換此字符串,以便如果/2或/4為空(如上述第一種情況),則為c。因此,文本a/b變?yōu)閏a/cb。文字aa/b變成aa/cb我使用以下正則表達式進行替換:(?(2)\1\2|0\1)/(?(4)\3\4|0\3)但是?在這種情況下,Notepad ++ 實際上是在處理,而不是作為條件標(biāo)識符。知道我在做什么錯嗎?
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

條件替換的語法是


(?{GROUP_MATCHED?}REPLACEMENT_IF_YES:REPLACEMENT_IF_NO}

當(dāng)處理高于9的組和命名捕獲組時,必須使用{和}來避免歧義。


由于Notepad ++使用Boost-Extended Format String Syntax,請參閱以下Boost文檔:


字符?開始一個條件表達式,一般形式為:


?Ntrue-expression:false-expression


其中N的十進制數(shù)字。


如果子表達式N匹配,則將true-expression求值并發(fā)送到輸出,否則false-expression將求值并發(fā)送到輸出。


通常,您需要將條件表達式括在括號中,以防止歧義。


例如,如果(?1foo:bar)匹配foo子表達式,則格式字符串將替換找到的每個匹配項,否則替換$1為bar。


對于索引大于9的子表達式,或?qū)γ颖磉_式的訪問,請使用:


?{INDEX}true-expression:false-expression


要么


?{NAME}true-expression:false-expression


因此,使用([a-zA-Z])([a-zA-Z])?/([a-zA-Z])([a-zA-Z])?并替換為(?{2}$1$2:c$1)/(?{4}$3$4:c$3)。


第二個問題是您將?量詞放置在捕獲組內(nèi),使該組內(nèi)的模式可選,但不是整個組。這使得小組始終“參與比賽”,而條件始終是“ true”(總是匹配)。?應(yīng)該量化組。

http://img1.sycdn.imooc.com//5dad5cab0001169006100405.jpg

查看完整回答
反對 回復(fù) 2019-10-21
  • 1 回答
  • 0 關(guān)注
  • 900 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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