需要c#中的正则表达式帮助

本文关键字:正则表达式 帮助 需要 | 更新日期: 2023-09-27 18:14:35

我当前的正则表达式是这样的:

(?<name>['w'-"]+)[ 'n]+MODULE-IDENTITY

它搜索MODULE-IDENTITY,然后返回前面的单词(带有-和"符号)。现在我想添加一些东西来检查MODULE-IDENTITY之前的单词是否为DOG,它不会导致匹配。

有人能帮忙吗?

需要c#中的正则表达式帮助

对于这个特定的例子:

(?<name>['w'-"]+)(?<!DOG)[ 'n]+MODULE-IDENTITY

这将匹配例如

测试
模块标识

但不


模块标识

在MODULE-IDENTITY之前检查任何单词的正则表达式的编写方式仅在:Regex: A-Z字符中给出然而,你需要有一个IsMatch检查,像:System.Text.RegularExpressions.Regex。IsMatch(s, pattern, system . text . regulareexpressions . regexoptions . ignorecase),其中s是您的输入字符串,pattern是您的正则表达式,最后一个参数是用于进行匹配的一些选项。

这是排除单词dog

的正则表达式
(?<name>'b(?!'bdog'b)['w'-"]+'b+)[ 'n]+MODULE-IDENTITY

我使用词边界'b来允许RegEx匹配像hot-dog这样包含要排除

的词的词。

试试http://regexhero.net/tester/

如果你输入
hi cat MODULE-IDENTITY test -> match found "cat MODULE-IDENTITY"
如果你输入
hi dog MODULE-IDENTITY test -> no matches found

c# code

string strRegex = @"(?<name>'b(?!'bdog'b)['w'-""]+'b+)[ 'n]+MODULE-IDENTITY";
Regex myRegex = new Regex(strRegex, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant);
string strTargetString = @"hi dog MODULE-IDENTITY test";
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
    // in this case no matches found because of "dog" word in input
   }
 }