You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中使用带NOT选项的正则表达式匹配指定文本?

在C#中使用负向正则断言实现NOT匹配需求

从你提供的主机过期特性文本来看,我们可以通过正则的负向断言来实现类似"NOT"选项的匹配逻辑——毕竟正则本身没有直接的NOT运算符,但负向前瞻/后顾断言完全能满足排除特定模式的需求。下面结合你的文本场景给出具体解决方案:

常见场景与正则实现

场景1:提取带有具体过期日期的条目(排除never过期的主机)

如果只想匹配标注了明确过期日期(比如10May2018)的主机特性,排除never永久有效条目,可以用这个正则:

\*\*(?!.*never)\d+\.\d+\.\d+\.\d+ \w+\d+\*\*.*?(?=\*\*|LICENSE|$)

正则解释:

  • \*\*:匹配目标条目开头的加粗标记
  • (?!.*never):负向前瞻断言,确保后续内容不包含never
  • \d+\.\d+\.\d+\.\d+:匹配标准IP地址格式
  • \w+\d+:匹配类似10May2018的日期格式
  • .*?(?=\*\*|LICENSE|$):匹配后续的特性内容,直到遇到下一个加粗标记、LICENSE关键词或文本结尾

场景2:提取非LICENSE前缀的主机条目(排除LICENSE相关记录)

如果需要排除那些以LICENSE开头的条目,提取独立的主机特性内容,用这个正则:

(?!LICENSE\s)\*\*\d+\.\d+\.\d+\.\d+ (?:never|\w+\d+)\*\*.*?(?=\*\*|LICENSE|$)

正则解释:

  • (?!LICENSE\s):负向前瞻断言,确保当前位置前不是LICENSE (注意空格)
  • (?:never|\w+\d+):匹配两种过期时间格式——never或具体日期
  • 其余部分和场景1一致,负责匹配IP、特性内容直到分隔符

C#代码示例

下面是场景1的完整实现代码,你可以根据需求替换正则表达式:

using System;
using System.Text.RegularExpressions;

class HostLicenseMatcher
{
    static void Main()
    {
        string input = @"主机过期特性 **172.17.64.120 never** CPSM-C-BASE CPSB-NPM CPSB-EPM CPSB-LOGS CPSB-MNTR CPSB-MPTL CPSB-UDIR CPSB-PRVS CPSB-GBLP CK-77B458DF8D52 **172.17.64.120 never** CPSM-C-U CPSB-NPM CPSB-EPM CPSB-LOGS CPSB-MNTR CPSB-MPTL CPSB-UDIR CPSB-PRVS CPSB-GBLP CK-FF18475CE402 **10.10.5.17 10May2018** CPSM-C-U CPSB-NPM CPSB-EPM CPSB-LOGS CPSB-MNTR(其他文本...)LICENSE **10.10.5.17 10May2018** LICENSE **172.17.64.120 never** LICENSE **172.17.64.120 neve...";
        
        // 替换成场景2的正则即可切换匹配逻辑
        string pattern = @"\*\*(?!.*never)\d+\.\d+\.\d+\.\d+ \w+\d+\*\*.*?(?=\*\*|LICENSE|$)";
        MatchCollection matches = Regex.Matches(input, pattern, RegexOptions.Singleline);
        
        Console.WriteLine("匹配到的有效条目:");
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Value.Trim());
        }
    }
}

代码说明:

  • RegexOptions.Singleline:让.可以匹配换行符,确保跨行的内容也能被正确匹配
  • MatchCollection:存储所有符合条件的匹配结果
  • 若需要调整排除规则,只需修改正则中的负向断言部分即可(比如排除特定IP,改成(?!172\.17\.64\.120))

内容的提问来源于stack exchange,提问作者Orel Hasis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:50:39