是否在记事本++中用转义引号替换带引号的字符串中的引号?

人气:884 发布:2022-10-16 标签: regex notepad++

问题描述

我正在使用记事本++查找(".*)"(.*)并将其替换为1"2,但它似乎不起作用。我不知道为什么。

示例: Someone said "My name is "sean"" 我希望是: Someone said "My name is "sean""

编辑:在我的情况下,右引号始终位于行尾,因此(".*)"(.*"$)可以吗?

Edit2:第一个引号前面还有一个逗号,因此我将使用(,".*)"(.*"$),尽管它在某些情况下可能不起作用,但我认为它适用于我的文件。

现在有问题了,替换它没有添加"它只是添加了一些空格。

推荐答案

它应该可以工作...您只需要做一些修复工作...

查找正则表达式应为("[^"]*)("w*)(")([^"]*") 替换为表达式应为1\2\34

确保将搜索模式选择为"正则表达式"

解释...

这相当棘手--我假设引号中的文本只是一个单词。如果你假设了其他事情,就很难确定了。

您需要找到一个 "后跟 [^"]*-非"的任意数量的字符,然后 ("w*)(")-一个被引用的单词,然后最后 ([^"]*")-任意数量的非引号字符+最后一个引号

这一点很重要,因为默认情况下,正则表达式匹配是贪婪的,.*将继续匹配所有字符,包括",直到字符串结尾(请参阅link)

在替换字符串中,您需要\来表示单个

619