【发布时间】:2019-01-30 07:27:42
【问题描述】:
我需要在不以:、{、} 或) 结尾的每一行末尾添加;。
我在记事本++中使用这个:
- 搜索:
[^:\{\}\)]$ - 替换为:
\1;
它可以找到所有字符串,但是它将在行尾之前找到的最后一个字符替换为;,而不是将其添加到其中。我尝试了$1 而不是\1,但它没有改变任何东西——找到的文本仍然被删除。
【问题讨论】:
我需要在不以:、{、} 或) 结尾的每一行末尾添加;。
我在记事本++中使用这个:
[^:\{\}\)]$
\1;
它可以找到所有字符串,但是它将在行尾之前找到的最后一个字符替换为;,而不是将其添加到其中。我尝试了$1 而不是\1,但它没有改变任何东西——找到的文本仍然被删除。
【问题讨论】:
您的模式没有捕获组,因此\1 是一个空字符串。改用$0 来指代整个比赛:
查找内容:[^:{})]$
替换为:$0;
但是,在某些边缘情况下它可能会失败([^:{})]$ 模式匹配除:、{、} 和 ) 以外的任何字符,因此在行结束前至少需要 1 个字符) ,也许,你最好在这里使用否定的lookbehind:
查找内容:$(?<![:{})])
替换为:;
$(?<![:{})]) 模式匹配行尾(带有$),然后(?<![:{})]) 否定后向查找确保没有:、{、} 或) 立即到当前位置的左侧。
【讨论】: