无法用正则表达式捕获字符串

时间:2015-11-12 03:20:05

标签: python regex python-3.x

我正在尝试使用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’ &quot;.</span>

正则表达式

<span class=\"text\">([a-zA-Z%$#@*+=§ß|,.:;!?&\-_()\[\]\/\\{}ÁáÉéÍíÓóÚúÂâÊêÔôçãõÄäËëÏïÖöÜüÀà\"\'‘’ªº ]+)<\/span>

有什么问题?

2 个答案:

答案 0 :(得分:0)

问题出在 &quot;。修复只是将不可见空间添加到正则表达式中,<span class=\"text\">([a-zA-Z%$#@*+=§ß|,.:;!?&\-_()\[\]\/\\{}ÁáÉéÍíÓóÚúÂâÊêÔôçãõÄäËëÏïÖöÜüÀà\"\'‘’ªº  ]+)<\/span>请注意,stackoverlow会将奇怪的空间转换为普通空格,因此在此答案中粘贴正则表达式将不起作用。您必须在此link

中的代码中粘贴它

将文字粘贴到vim中并搜索(普通空格), &quot;中的空格不会突出显示。检查奇怪的空间显示它是&nbsp,字符代码为240.参考:http://www.ascii-code.com/

enter image description here

<强>声明:   正则表达式不是用于解析html。但似乎操作正在快速进行,我认为在这种情况下使用正则表达式是可以的。

答案 1 :(得分:0)

除了将允许的字符添加到您的类之外,如果您选择使用negated class,则排除使用See demo at regex101不允许的字符可能更具可读性和可维护性!

<span\s+class=\"text\">([^<]+)<\/span>
  • [^<]+匹配一个或多个不是<
  • 的字符
  • \s+匹配一个或多个空格[ \t\r\n\f]

{{3}}