我指的是这个页面:http://ergoemacs.org/emacs/emacs_regex.html
这表示要在Emacs Regexp中捕获一个模式,你需要像这样逃避这些:\(myPattern\)
。
它进一步说明捕获ASCII字符序列的语法是[[:ascii:]]+
在我的文档中,我正在尝试匹配<p class="calibre3">
和</p>
因此,按照上面的语法,我为
执行replace-regexp <p class="calibre3">\([[:ascii:]]+\)</p>
但它找不到匹配项。
建议?
答案 0 :(得分:2)
正则表达式不适用于通用HTML解析,但由于段落标记无法有效嵌套,因此以下情况会好起来(前提是标记有效并且格式正确)。
<p class="calibre3">\(.*?\)</p>
*?
是非贪婪的零或多重复运算符,因此它将尽可能少地匹配 - 在这种情况下一切都要到下一个</p>
(而不是贪婪的版本) ,这将匹配所有内容,直到文本中的最后</p>
。
如果[^<]
方法符合相关数据,则此方法很好,但如果段落中还有其他标记,则无效。
答案 1 :(得分:0)
您需要转义尖括号,我会使用[^&lt;]而不是[[:ascii]],如下所示:
\<p class="calibre3"\>([^<]+\)</p\>
答案 2 :(得分:0)
<p class="calibre3">\([^<]\)+</p>
来源:@TooTone