2014-12-07 74 views
1

我有数百个字符串的是采取的形式使用Emacs的查询替换,正则表达式逃脱“字

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

我试图用Query-replace-regexp,以取代那些字符串

"""Foo, Baz"" <[email protected]>"

到目前为止,我有一个模式"\"\"[A-Z]+, [A-Z]+\""但这并不匹配任何东西。我不能做一个简单的查找/上"""替换因为...它会造成太多的错误命中。我错过了什么,怎么能创建一个符合我规定模式的正则表达式?

回答

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>"