繁体   English   中英

Python正则表达式-剥离HTML标记并从内部HTML格式化字符

[英]Python regex - stripping out HTML tags and formatting characters from inner HTML

我正在处理这样的单个HTML字符串

>> s = 'u><br/>\n                                    Some text <br/><br/><u'

我在有意义的文本中嵌入了损坏的HTML或不完整的HTML标签。 我只需要提取该内部文本,而忽略损坏的HTML。 我怎样才能做到这一点? 我正在使用

>> re.search(r'(.>)(<.>)(.>)', s)
>>

但这返回null。

如果我理解正确,那么您正在寻求以下输入:

u><br/>\n                                    Some text <br/><br/><u

并接收以下输出:

\n                                    Some text 

仅需关心两个向内指向括号之间的内容即可轻松完成此操作。 我们想要:

  • 右括号> (所以我们知道从哪里开始)
  • 某些文字\\n Some text (内容)不包含左括号
  • 左括号< (所以我们知道在哪里结束)

你要:

>>> s = 'u><br/>\n                                    Some text <br/><br/><u'
>>> re.search(r'>([^<]+)<', s)
<_sre.SRE_Match object; span=(6, 55), match='>\n                                    Some text >

(可以通过.group(1)访问捕获的组。)

此外,如果您希望每行有多个匹配re.findall则可能要使用re.findall

>>> re.findall(r'>([^<]+)<', s)
['\n                                    Some text ']

编辑:解决评论:如果您有多个匹配项,并且想要将它们连接到单个字符串中(有效地删除所有类似HTML的标记内容),请执行以下操作:

>>> s = 'nbsp;<br><br>Some text.<br>Some \n more text.<br'
>>> ' '.join(re.findall(r'>([^<]+)<', s))
'Some text. Some \n more text.'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM