正如标题所说,我需要一个Regex表达式,它将匹配一行,这行不以某个字符(“)结束,然后替换整行并在末尾追加。在我的文件中有一些行应该以“但它丢失了,所以我需要找到这些行并添加丢失的“使用Regex和VS代码查找和替换此表达式
[^\n"/n](\n|$)
查找这种类型的所有行,但我不能追加,因为当尝试替换时,它会删除字符串的最后一个字符
$1 "
6psbrbz91#
将VS Code的find-and-replace设置为regex模式。将.*[^"]$设置为search字段,将$0"设置为replace字段。replace字段中的“$0”表示每个匹配项匹配的全部内容。
.*[^"]$
$0"
$0
zxlwwiss2#
匹配时,您丢失了最后一个字符,但在替换中仅使用捕获组$1您可以匹配[^"]$并在替换中使用完全匹配,如$0 "
$1
[^"]$
$0 "
lyr7nygr3#
你真的不需要选择任何东西。查找:(?<!"|^\s*)$更换:"正则表达式只检查行$的末尾前面没有",或者不是只有空格的空行。参见regex101 demo
(?<!"|^\s*)$
"
$
9q78igpj4#
您可以使用可选的"搜索行的所有结尾,而不是搜索不以"结尾的行:
"?$
如果一行已经有了双引号,这一行将被替换为双引号。如果一行没有双引号,则添加一个双引号。注意:不要尝试在regex101中这样做,因为以"结尾的行被匹配两次(在双引号位置和行尾位置),它只在VScode中有效。
4条答案
按热度按时间6psbrbz91#
将VS Code的find-and-replace设置为regex模式。将
.*[^"]$
设置为search字段,将$0"
设置为replace字段。replace字段中的“$0
”表示每个匹配项匹配的全部内容。zxlwwiss2#
匹配时,您丢失了最后一个字符,但在替换中仅使用捕获组
$1
您可以匹配
[^"]$
并在替换中使用完全匹配,如$0 "
lyr7nygr3#
你真的不需要选择任何东西。
查找:
(?<!"|^\s*)$
更换:
"
正则表达式只检查行
$
的末尾前面没有"
,或者不是只有空格的空行。参见regex101 demo
9q78igpj4#
您可以使用可选的
"
搜索行的所有结尾,而不是搜索不以"
结尾的行:"?$
"
如果一行已经有了双引号,这一行将被替换为双引号。如果一行没有双引号,则添加一个双引号。
注意:不要尝试在regex101中这样做,因为以
"
结尾的行被匹配两次(在双引号位置和行尾位置),它只在VScode中有效。