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

2024-09-27 21:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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>

怎么了


Tags: 字符串text文本thisdoclassregexda
2条回答

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

在vim中粘贴文本并搜索(纯空格) &quot;中的空格不会突出显示。检查这个奇怪的空间会发现它是一个&nbsp,字符代码是240

enter image description here

免责声明: Regex不用于解析html。但似乎op正在做快速刮削,我认为在这种情况下使用regex是好的

如果您可以选择使用negated class来排除不允许的字符,而不是将允许的字符添加到类中,这样可能会更好地可读性和可维护性

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

See demo at regex101

相关问题 更多 >

    热门问题