2014-12-07 78 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>"