Regex 将两个复杂正则表达式与或组合在一起?

Regex 将两个复杂正则表达式与或组合在一起?,regex,Regex,我有两个复杂的正则表达式,它们完成同一任务的两部分。因此,我基本上是双重工作——一次传球给雷克斯a,一次传球给雷克斯B。我想用|(或)将两者结合起来,这样就可以一次击倒它 雷克斯能和这两个人结婚吗 Rex A对于包装在匹配中的字符串是真的,js评论了md5例如:/*a1700e65a69859ac8c56b0baef91b61a*/此文本以及随附注释将匹配。此字符串和结束md5/*a1700e65a69859ac8c56b0baef91b61a*/ (\/\*(.){32}\*\/).*(\n

我有两个复杂的正则表达式,它们完成同一任务的两部分。因此,我基本上是双重工作——一次传球给雷克斯a,一次传球给雷克斯B。我想用
|(或)
将两者结合起来,这样就可以一次击倒它

雷克斯能和这两个人结婚吗

  • Rex A对于包装在匹配中的字符串是真的,js评论了md5
    例如:
    /*a1700e65a69859ac8c56b0baef91b61a*/此文本以及随附注释将匹配。此字符串和结束md5/*a1700e65a69859ac8c56b0baef91b61a*/

    (\/\*(.){32}\*\/).*(\n)?\1
    
  • Rex B执行类似的操作,但用于html stlye注释
    例如:
    text

    这是一个regex101演示


    什么技巧?< /P> < P>如何在中间的非捕获组<代码> >(?)<代码>中使用另一个<代码> < <代码> >

    (?:(\/\*(.){32}\*\/).*(\n)?\1)|(?:(<!--(.*)-->).*(\n)?\1)
    
    (?:(\/\*(..{32}\*/).(\n)?\1);(?:()。(\n)?\1)
    
    捕获组的数量从左开始计数,计算捕获组的左括号。据我计算,这意味着您的
    |
    尝试中(两者)的最后
    \1
    应该是
    \4
    也许?

    您有测试用例吗?甚至一个试图搜索和替换恶意软件以清理系统的人都被严重地误导了。您应该从版本控制或已知良好的备份中恢复。请参阅众多重复问题中的一个,了解更详细的理由。这两个基本模式是错误的。@tripleee我完全同意你的观点,这绝对是最好的解决方法。在我的梦想场景中:“200个站点被黑客入侵?呃。合并origin并称之为好的。”可悲的是,我在这里没有这种情况:((在这家公司工作的第二周)如中所示,这一个似乎已经做到了!
    ()。(\n)?\1(\/\*({32}\*/)。(\n)?\4
    edit:刚刚在一个真实的用例中试用了它,这就解决了它。了解了一些关于如何计算捕获组的新知识:)
    // simple or. this ignores the latter of the or
    (\/\*(.){32}\*\/).*(\n)?\1|(<!--(.){32}-->).*(\n)?\1
    // thinking it may have been greedy, i switched it. No real change in behavior 
    (<!--(.){32}-->).*(\n)?\1|(\/\*(.){32}\*\/).*(\n)?\1
    
    ((\/\*)|(<!--)(.){32}(\*\/)|(-->)).*(\n)?\1
    
    (?:(\/\*(.){32}\*\/).*(\n)?\1)|(?:(<!--(.*)-->).*(\n)?\1)