【问题标题】:NOT match the regex不匹配正则表达式
【发布时间】:2009-11-13 09:34:08
【问题描述】:

由于限制,我需要编写一个正则表达式,我想将某些字符串(或站点)列入黑名单而不是白名单

在这里我想禁止 youtube 和 IP 地址。下面是与这两个站点匹配的代码。我怎么能不匹配它们并允许两个谷歌(或任何其他网站)匹配?

这是我用来测试正则表达式的一些 C# 代码。

        var mq = Regex.Match("http://google.com\nhttp://youtube.com\nhttp://google.com/ddhf\n72.72.72.72\n",
            @"(.*youtube\.com.*|\d+\.\d+\.\d+\.\d+)", RegexOptions.Multiline);
        while (mq.Success)
        {
            string sz = mq.Groups[0].Value;
            Console.WriteLine(sz);
            mq = mq.NextMatch();
        }

        return;

【问题讨论】:

    标签: regex blacklist


    【解决方案1】:

    您需要the ?! construct。所以它会是:

    (?!.*youtube\.com.*|\d+\.\d+\.\d+\.\d+)
    

    【讨论】:

    • (?!) 只是“向前看”,意思是,它什么也没抓住。您必须重复该模式,如下所示:(?!youtube)([a-z]+),然后第二个括号捕获任何不是“youtube”的单词。
    猜你喜欢
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多