2012-03-18 69 views
2

Emacs是否有一种简单的方法来搜索和替换XML文件中的文本,但对于只对文档文本起作用的s操作,不是标记?Emacs XML模式:在文本中进行搜索和替换(不是标记)

例如:

... 
There is some text above here 
[mark-starts-here] 
<some_tag key="value"> 
    text 
</some_tag> 
[mark-ends-here] 
There is some text below here 
... 

取代eE获得:

... 
There is some text above here 
[mark-starts-here] 
<some_tag key="value"> 
    tExt 
</some_tag> 
[mark-ends-here] 
There is some text below here 
... 

回答

1

我不知道,如果XML模式有类似的东西内置的,但这里有一个简单的功能,它是这样做的:

(defun my-replace-outside-of-tags (regexp replacement) 
    (while (re-search-forward regexp nil t) 
    (unless (save-match-data 
       (looking-at "[^<>]*>")) 
     (replace-match replacement)))) 
+0

这实际上只是在缓冲区中的最后一个'>'之后进行替换。 – phils 2012-03-24 11:45:38

+0

你说得对,正则表达式中缺少开始标记。奇怪,因为我测试了它。 – Tom 2012-03-24 16:11:19

相关问题