正则表达式行尾替换

正则表达式行尾替换

我想用“;”替换行尾,但仅限于未以“;”结尾的行。我想出了以下内容以放入替换对话框中:

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

相关内容