删除字符串中除第一次出现以外的所有出现

删除字符串中除第一次出现以外的所有出现,第1张

删除字符串中除第一次出现以外的所有出现

此解决方案使用两个正则表达式。第一个正则表达式将整个文件/字符串分成三个块:

  1. 第一个块(捕获到group中
    )是从字符串开始到第一个HTML开始标记(包括该标记)的所有内容。
  2. 第二个块(捕获到group中
    )是第一个HTML开始标记之后到最后一个HTML关闭标记开始之间的所有内容。
  3. 第三个块(捕获到group中
    )包括最后一个HTML结束标记以及文件/字符串末尾的所有内容。

该函数首先尝试将正则表达式与输入文本匹配。如果匹配,则使用第二个正则表达式从最外面的HTML元素(先前在组2中捕获)的内容中删除所有HTML起始和结束标签。然后使用三个大块重新组装字符串(中间大块已去除HTML标签)。

def stripInnermostHTMLtags(text):    '''Strip all but outermost HTML start and end tags.    '''    # Regex to match outermost HTML element and its contents.    p_outer = re.compile(r"""        ^      # Anchor to start of string.        (.*?<html[^>]*>)  # : Outer HTML start tag.        (.*)   # : Outer HTML element contents.        (</htmls*>.*)    # : Outer HTML end tag.        $      # Anchor to end of string.        """, re.DOTALL | re.VERBOSE | re.IGNORECASE)    # Split text into outermost HTML tags and its contents.    m = p_outer.match(text)    if m:        # Regex to match HTML element start or end tag.        p_inner = re.compile("</?html[^>]*>", re.IGNORECASE)        # Strip contents of any/all HTML start and end tags.        contents = p_inner.sub("", m.group(2))        # Put string back together stripped of inner HTML tags.        text = m.group(1) + contents + m.group(3)    return text

请注意,此解决方案可以正确处理HTML开始标记中的所有属性。还要注意,此解决方案不处理具有属性值包含

>
字符值的HTML标记(但这应该非常少见)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5674681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存