Regexp在记事本++中的不同行为

时间:2013-10-31 11:26:57

标签: regex notepad++

我有一组像这样的单词

"text1
"text2
"text3

我需要转换为引用文本,我可以使用stackoverflow帮助这样做

Find: ^\".*$
replace: $0"

还有另外一组这样的词

text1
text2
text3

我需要转换为1个引用文本,我能够做到

Find: ^(.+)$
Replace: "$0"

但在这种情况下,我只能通过点击全部替换而不是替换来完成。

任何人都可以告诉它为什么会这样发生,如何在不使用全部更换和仅使用替换的情况下实现此目的?

3 个答案:

答案 0 :(得分:1)

负责第二次替换,它将"text1"替换为""text1""

请改用:

find what: ^[^"\n]+$
replace: "$0"

答案 1 :(得分:1)

它应该使用全部替换,而不是任何情况下替换。该功能也可能受到光标位置和查找/替换方向的影响。

要确定,您可以将光标放在文件的开头,确保查找方向为“向下”并使用全部替换。

现在到正则表达式,是的,你可以在一次替换中完成。使用此发现:

^(?:")?(.*)$

这取代:

"$1"

regex101 demo

(?:")?将使用第一个双引号(如果存在),以便稍后不会将其置于替换中。

答案 2 :(得分:0)

在第一种情况下,你无法使用“替换”一次!你必须按下它3次(与你的比赛一样多)。

在这两种情况下,您都需要“全部替换”,因为您需要多次全局匹配。按“全部替换”按钮时,就像使用Perl's /g&替换中的/m修饰符,您可以试用here来查看我的意思。

BTW在第二个示例中使用捕获组(括号)是多余的,使用find:^.+$并替换:"$0"