gpt4 book ai didi

regex - 如何减少python正则表达式中的步骤?

转载 作者:行者123 更新时间:2023-12-01 04:53:33 24 4
gpt4 key购买 nike

这是我的正则表达式

([^>]+?[<])/?(?!a)(?:br|p)



这是例子
<r> this is text which I do not want <a> This is what I want!<br>
我只想在 '>' 和 '< br 或 p' 之间删除文本

这个正则表达式完全符合我的要求,但我意识到这太花时间了。

我在正则表达式调试器上运行了这个,它花了 800 多个步骤来检查错误的句子。

我该如何解决?

最佳答案

您的 ([^>]+?[<])/?(?!a)(?:br|p)模式的意思:

  • ([^>]+?[<]) - 将 > 以外的一个或多个(但尽可能少)字符捕获到组 1 中直到第一个 <
  • /? - 匹配一个可选的 /符号
  • (?!a)(?:br|p) - 匹配任一 brp不以 a 开头的(所以,前瞻是没有意义的)。

  • 基本上,它只返回 </br> 之前的文本, <br<p .你可以使用
    >([^<]+)</?(?:br|p)\b

    regex demo (有效匹配的 21 个步骤,以及针对非匹配字符串的 9 个步骤 <r> this is text which I do not want <a> This is what I want!br> )。

    图案详情 :
  • > - 文字 >
  • ([^<]+) - 捕获匹配一个或多个字符而不是 < 的组 1
  • < - 文字 <
  • /? - 可选(一或零)/
  • (?:br|p)\b - 要么 brp后跟单词边界(这些值之后必须有一个非单词字符)。

  • Python demo :
    import re
    p = re.compile(r'>([^<]+)</?(?:br|p)\b')
    s = "<r> this is text which I do not want <a> This is what I want!<br>"
    print(p.findall(s))

    关于regex - 如何减少python正则表达式中的步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38986728/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com