1 回答

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)該量化組。
添加回答
舉報