1 回答

TA贡献1875条经验 获得超5个赞
条件替换的语法是
(?{GROUP_MATCHED?}REPLACEMENT_IF_YES:REPLACEMENT_IF_NO}
当处理高于9的组和命名捕获组时,必须使用{和}来避免歧义。
由于Notepad ++使用Boost-Extended Format String Syntax,请参阅以下Boost文档:
字符?开始一个条件表达式,一般形式为:
?Ntrue-expression:false-expression
其中N的十进制数字。
如果子表达式N匹配,则将true-expression求值并发送到输出,否则false-expression将求值并发送到输出。
通常,您需要将条件表达式括在括号中,以防止歧义。
例如,如果(?1foo:bar)匹配foo子表达式,则格式字符串将替换找到的每个匹配项,否则替换$1为bar。
对于索引大于9的子表达式,或对命名子表达式的访问,请使用:
?{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)。
第二个问题是您将?量词放置在捕获组内,使该组内的模式可选,但不是整个组。这使得小组始终“参与比赛”,而条件始终是“ true”(总是匹配)。?应该量化组。
- 1 回答
- 0 关注
- 857 浏览
添加回答
举报