Regex 如何编写与此正则表达式相反的正则表达式?

Regex 如何编写与此正则表达式相反的正则表达式?,regex,Regex,这是代理的正则表达式,如果我将其添加到代理中: (.*\.|)(abc|google)\.(org|net) 我的代理不会传输abc.org,abc.net,google.org,google.net的流量 如何编写与此正则表达式相反的正则表达式?我的意思是只传输abc.org,abc.net,google.org,google.net的流量 EDIT-01 我的想法是只想传送abc.org或www.abc.org,我该怎么办 我假设你有长相头,如果有,那么你可以简单地使用- (^.*?\.

这是代理的正则表达式,如果我将其添加到代理中:

(.*\.|)(abc|google)\.(org|net)
我的代理不会传输
abc.org
abc.net
google.org
google.net
的流量

如何编写与此正则表达式相反的正则表达式?我的意思是只传输
abc.org
abc.net
google.org
google.net
的流量


EDIT-01


我的想法是只想传送
abc.org
www.abc.org
,我该怎么办

我假设你有长相头,如果有,那么你可以简单地使用-

(^.*?\.(?!(abc|google))\w+\.(?:org|net)$)
演示-

它的作用是-

  • 查找url的开头(直到第一个
  • 检查下一部分是否不是
    abc
    google
  • 查找下一节(直到下一节)
  • 查找关闭的
    org
    net

  • 请注意,由于它是一个前瞻性的,因此与其他正则表达式匹配相比,它会很慢,我将假设您有lookaheads,如果是这样,那么您可以简单地使用-

    (^.*?\.(?!(abc|google))\w+\.(?:org|net)$)
    
    演示-

    它的作用是-

  • 查找url的开头(直到第一个
  • 检查下一部分是否不是
    abc
    google
  • 查找下一节(直到下一节)
  • 查找关闭的
    org
    net
  • 请注意,由于它是一个前瞻性的,因此与其他正则表达式匹配相比,它会很慢

    ^(?!(www\.)?(?:abc|google)\.(?:net|org)).*
    
    演示:

    我用了
    以反转正则表达式的匹配。这样,它将匹配除这4个特定域之外的任何域

    另一种方法是使用此代码在所需域之前包含任何内容:

    ^(?!(.*\.|)(?:abc|google)\.(?:net|org)).*
    
    演示:

    试试这个:

    ^(?!(www\.)?(?:abc|google)\.(?:net|org)).*
    
    演示:

    我用了
    以反转正则表达式的匹配。这样,它将匹配除这4个特定域之外的任何域

    另一种方法是使用此代码在所需域之前包含任何内容:

    ^(?!(.*\.|)(?:abc|google)\.(?:net|org)).*
    
    演示:

    您编写的正则表达式

    (.\.|)abc(谷歌)\.(org|net)

    表示任何字符串都是abc.org、gooogle.org、abc.net、google.net中的一个,可选前缀字符串以点(.) 比如:test.google.org,sub.abc.net

    我认为您希望匹配test.yahoo.com之类的字符串,但不希望匹配test.google.org。如果您可以使用“消极展望”,则答案如下:

    ^(.*\.|)(?!(abc |谷歌)\.(org | net))\w+\.\w+$

    说明:

    • ^$以确保您的匹配是整个url字符串
    • 负面展望是检查url不是像abc.org、abc.net、google.org、google.net这样的东西
    • \w+\。\w+检查保留的字符串是一种URL类型(类似于yahoo.com等…)
      • 您编写的正则表达式

        (.\.|)abc(谷歌)\.(org|net)

        表示任何字符串都是abc.org、gooogle.org、abc.net、google.net中的一个,可选前缀字符串以点(.) 比如:test.google.org,sub.abc.net

        我认为您希望匹配test.yahoo.com之类的字符串,但不希望匹配test.google.org。如果您可以使用“消极展望”,则答案如下:

        ^(.*\.|)(?!(abc |谷歌)\.(org | net))\w+\.\w+$

        说明:

        • ^$以确保您的匹配是整个url字符串
        • 负面展望是检查url不是像abc.org、abc.net、google.org、google.net这样的东西
        • \w+\。\w+检查保留的字符串是一种URL类型(类似于yahoo.com等…)

        您确定双精度
        |
        正确吗?将其标记为一个模式错误,如果您删除我正确匹配的
        abc.org
        abc.net
        google.org
        google.net
        ,那么您只需编辑代码即可允许来自这些站点的流量您的正则表达式风格是否支持环顾断言?如果没有,那么你可能很难做到你在这里要求的。通常我建议你只使用
        ^(?(.*\)(abc(谷歌)\(org(谷歌))
        ,但是因为你的基本正则表达式中有一个
        *
        ,你不能这样做。你能提供一些你试图匹配的模式类型的例子吗?这个正则表达式也匹配上述域的所有子域。因此,news.abc.org也将提供匹配。除此之外,我认为casualcoder的方法是正确的。您确定double
        是正确的吗?将其标记为一个模式错误,如果您删除我正确匹配的
        abc.org
        abc.net
        google.org
        google.net
        ,那么您只需编辑代码即可允许来自这些站点的流量您的正则表达式风格是否支持环顾断言?如果没有,那么你可能很难做到你在这里要求的。通常我建议你只使用
        ^(?(.*\)(abc(谷歌)\(org(谷歌))
        ,但是因为你的基本正则表达式中有一个
        *
        ,你不能这样做。你能提供一些你试图匹配的模式类型的例子吗?这个正则表达式也匹配上述域的所有子域。因此,news.abc.org也将提供匹配。除此之外,我认为casualcoder的方法是正确的。似乎abc.net、www.abc.net和其他都不能传输。似乎abc.net、www.abc.net和其他都不能传输。@244boy-hmm,演示符合您的要求吗?如果是这样的话,这可能是您如何实施regex@244boy嗯,这个演示符合你的要求吗?如果是这样的话,可能是如何实现regex的问题