0

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

这表示要在 Emacs Regexp 中捕获模式,您需要像这样转义括号:\(myPattern\).

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

在我的文档中,我试图匹配出现在<p class="calibre3">和之间的所有字符串</p>

所以,按照上面的语法,我做了一个替换正则表达式

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

但它找不到匹配项。

建议?

4

3 回答 3

2

正则表达式不适用于通用 HTML 解析,但由于段落标签不能有效嵌套,以下内容会很好(前提是标记有效且格式正确)。

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

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

如果该[^<]方法适合相关数据,则该方法很好,但如果段落中有其他标签,则该方法将不起作用。

于 2013-04-25T20:40:02.110 回答
0

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

\<p class="calibre3"\>([^<]+\)</p\>
于 2013-04-25T14:43:26.630 回答
0

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

来源:@TooTone

于 2013-04-25T14:58:54.193 回答