如何匹配Emacs regexp中的任何字符串?

时间:2013-04-25 14:30:38

标签: regex emacs

我指的是这个页面:http://ergoemacs.org/emacs/emacs_regex.html

这表示要在Emacs Regexp中捕获一个模式,你需要像这样逃避这些:\(myPattern\)

它进一步说明捕获ASCII字符序列的语法是[[:ascii:]]+

在我的文档中,我正在尝试匹配<p class="calibre3"></p>

之间出现的所有字符串

因此,按照上面的语法,我为

执行replace-regexp

<p class="calibre3">\([[:ascii:]]+\)</p>

但它找不到匹配项。

建议?

3 个答案:

答案 0 :(得分:2)

正则表达式不适用于通用HTML解析,但由于段落标记无法有效嵌套,因此以下情况会好起来(前提是标记有效并且格式正确)。

<p class="calibre3">\(.*?\)</p>

*?是非贪婪的零或多重复运算符,因此它将尽可能少地匹配 - 在这种情况下一切都要到下一个</p>(而不是贪婪的版本) ,这将匹配所有内容,直到文本中的最后</p>

如果[^<]方法符合相关数据,则此方法很好,但如果段落中还有其他标记,则无效。

答案 1 :(得分:0)

您需要转义尖括号,我会使用[^&lt;]而不是[[:ascii]],如下所示:

\<p class="calibre3"\>([^<]+\)</p\>

答案 2 :(得分:0)

<p class="calibre3">\([^<]\)+</p>

来源:@TooTone