我正在尝试使用this regex捕获span
内的文字。但我无法理解为什么这不起作用。
字符串
<span class="text">mas Deus disse: ‘Não comam do fruto da árvore que está no meio do jardim, nem toquem nele; do contrário vocês morrerão’ ".</span>
正则表达式
<span class=\"text\">([a-zA-Z%$#@*+=§ß|,.:;!?&\-_()\[\]\/\\{}ÁáÉéÍíÓóÚúÂâÊêÔôçãõÄäËëÏïÖöÜüÀà\"\'‘’ªº ]+)<\/span>
有什么问题?
答案 0 :(得分:0)
问题出在 "
。修复只是将不可见空间添加到正则表达式中,<span class=\"text\">([a-zA-Z%$#@*+=§ß|,.:;!?&\-_()\[\]\/\\{}ÁáÉéÍíÓóÚúÂâÊêÔôçãõÄäËëÏïÖöÜüÀà\"\'‘’ªº ]+)<\/span>
请注意,stackoverlow会将奇怪的空间转换为普通空格,因此在此答案中粘贴正则表达式将不起作用。您必须在此link
将文字粘贴到vim中并搜索(普通空格),
"
中的空格不会突出显示。检查奇怪的空间显示它是 
,字符代码为240.参考:http://www.ascii-code.com/
<强>声明强>: 正则表达式不是用于解析html。但似乎操作正在快速进行,我认为在这种情况下使用正则表达式是可以的。
答案 1 :(得分:0)
除了将允许的字符添加到您的类之外,如果您选择使用negated class,则排除使用See demo at regex101不允许的字符可能更具可读性和可维护性!
<span\s+class=\"text\">([^<]+)<\/span>
[^<]+
匹配一个或多个不是<
\s+
匹配一个或多个空格[ \t\r\n\f]
。{{3}}