regex 如何找到不以特定字符(“)结尾的行,然后使用VS Code中的find and replace添加该字符?

f0brbegy  于 2023-03-24  发布在  其他
关注(0)|答案(4)|浏览(151)

正如标题所说,我需要一个Regex表达式,它将匹配一行,这行不以某个字符(“)结束,然后替换整行并在末尾追加。在我的文件中有一些行应该以“但它丢失了,所以我需要找到这些行并添加丢失的“使用Regex和VS代码查找和替换此表达式

[^\n"/n](\n|$)

查找这种类型的所有行,但我不能追加,因为当尝试替换时,它会删除字符串的最后一个字符

$1 "
6psbrbz9

6psbrbz91#

将VS Code的find-and-replace设置为regex模式。将.*[^"]$设置为search字段,将$0"设置为replace字段。replace字段中的“$0”表示每个匹配项匹配的全部内容。

zxlwwiss

zxlwwiss2#

匹配时,您丢失了最后一个字符,但在替换中仅使用捕获组$1
您可以匹配[^"]$并在替换中使用完全匹配,如$0 "

lyr7nygr

lyr7nygr3#

你真的不需要选择任何东西。
查找:(?<!"|^\s*)$
更换:"
正则表达式只检查行$的末尾前面没有",或者不是只有空格的空行。
参见regex101 demo

9q78igpj

9q78igpj4#

您可以使用可选的"搜索行的所有结尾,而不是搜索不以"结尾的行:

  • 检索:"?$
  • 更换:"

如果一行已经有了双引号,这一行将被替换为双引号。如果一行没有双引号,则添加一个双引号。
注意:不要尝试在regex101中这样做,因为以"结尾的行被匹配两次(在双引号位置和行尾位置),它只在VScode中有效。

相关问题