使用Emacs的query-replace-regexp来转义“字符”

时间:2014-12-07 02:58:55

标签: regex emacs replace

我有数百个字符串,其形式为

""Foo, Baz" <foobaz>@fizz.com>"

我正在尝试使用Query-replace-regexp

替换这些字符串

"""Foo, Baz"" <foobaz@fizz.com>"

到目前为止,我有一个模式"\"\"[A-Z]+, [A-Z]+\"",但这与任何事情都不匹配。我无法在"""上进行简单的查找/替换,因为它会导致过多的错误点击。我错过了什么,怎样才能创建符合我规定模式的正则表达式?

1 个答案:

答案 0 :(得分:1)

匹配失败,因为您在搜索字符串中放置了大写字母。来自http://www.gnu.org/software/emacs/manual/html_node/emacs/Search-Case.html

  

Emacs中的搜索通常会忽略它们的文本大小写   搜索,如果您指定小写文本。因此,如果你   指定搜索'foo',然后'Foo'和'foo'也匹配。正则表达式,   特别是字符集,表现同样:'[ab]'匹配'a'   或'A'或'b'或'B'。

     

增量搜索字符串中任意位置的大写字母   搜索区分大小写。因此,搜索'Foo'找不到   'foo'或'FOO'。这适用于正则表达式搜索以及   字符串搜索。如果删除大写,效果将停止   搜索字符串中的字母。

假设变量case-fold-search设置为t(默认值),那么如果您使用此搜索文本:

""[a-z]+, [a-z]+"

和替换文字:

"\&"

然后query-replace-regexp会将此转换为:

""Foo, Baz" <foobaz>@fizz.com>"

到此:

"""Foo, Baz"" <foobaz>@fizz.com>"