1 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
條件替換的語法是
(?{GROUP_MATCHED?}REPLACEMENT_IF_YES:REPLACEMENT_IF_NO}
當(dāng)處理高于9的組和命名捕獲組時(shí),必須使用{和}來避免歧義。
由于Notepad ++使用Boost-Extended Format String Syntax,請(qǐng)參閱以下Boost文檔:
字符?開始一個(gè)條件表達(dá)式,一般形式為:
?Ntrue-expression:false-expression
其中N的十進(jìn)制數(shù)字。
如果子表達(dá)式N匹配,則將true-expression求值并發(fā)送到輸出,否則false-expression將求值并發(fā)送到輸出。
通常,您需要將條件表達(dá)式括在括號(hào)中,以防止歧義。
例如,如果(?1foo:bar)匹配foo子表達(dá)式,則格式字符串將替換找到的每個(gè)匹配項(xiàng),否則替換$1為bar。
對(duì)于索引大于9的子表達(dá)式,或?qū)γ颖磉_(dá)式的訪問,請(qǐng)使用:
?{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)。
第二個(gè)問題是您將?量詞放置在捕獲組內(nèi),使該組內(nèi)的模式可選,但不是整個(gè)組。這使得小組始終“參與比賽”,而條件始終是“ true”(總是匹配)。?應(yīng)該量化組。
添加回答
舉報(bào)