我想用“;”替换行尾,但仅限于未以“;”结尾的行。我想出了以下内容以放入替换对话框中:
Find What = '[^\;]\r\n'
Replace with = '\;\r\n'
我的问题是这还会选择一行的最后一个字符。我不想替换最后一个字符...只想替换回车符。
关于如何纠正这个问题有什么想法吗?
答案1
您的正则表达式将会替换整行的末尾,因此最好的办法是取整行,检查是否有半角字符,然后只替换需要的部分(例如,添加半角字符)。
(.*)([^\;])(\r\n)
是一个具有 3 个捕获组的表达式:
(.*)
-- 该行的第一部分([^\;])
-- 检查丢失的半挂车(\r\n)
-- 行结束
因此,我们可以取第一组,添加半角,然后取最后一组来得到整条线,唯一的区别就是半角本身。
替换表达式\1\;\3
将把第一组、半组和最后一组连接在一起。
请注意,该\#
语法对于 Notepad++ 和其他一些工具来说是通用的,但不是通用的(许多使用 $1、$2、...$n)。请务必检查您的编辑器文档。
答案2
使用
Find What: ([^\;])\r\n
Replace with: $1;\r\n
它将用相同的字符 + ';' 替换最后一个字符,除非它是 ';'
另外,在“replace”中,“;”之前不需要“\”
答案3
- Ctrl+H
- 找什么:
(?<!;)$
- 用。。。来代替:
;
- 检查环绕
- 检查正则表达式
- Replace all
解释:
(?<! # negative lookbehind, zero-length assertion that make sure we haven't before current position:
; # a semicolon
) # end lookbehind
$ # end of line