需要在C#中使用正则表达式表达式

时间:2014-07-23 11:50:59

标签: c# regex

我目前的正则表达式看起来有点像这样:

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

它搜索MODULE-IDENTITY然后返回之前的单词(带 - 和&#34;符号)。现在我想添加一些东西来检查MODULE-IDENTITY之前的单词是否允许说DOG它不会导致匹配。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

对于这个具体的例子:

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

这将匹配,例如

测试
MODULE-IDENTITY

但不是

DOG
MODULE-IDENTITY

答案 1 :(得分:0)

这是排除单词dog

的regEx
(?<name>\b(?!\bdog\b)[\w\-"]+\b+)[ \n]+MODULE-IDENTITY

我使用字边界\b来允许RegEx匹配包含要排除的字的hot-dog之类的字词

使用http://regexhero.net/tester/

进行尝试

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

c#代码

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
   }
 }

答案 2 :(得分:0)

编写正则表达式以检查MODULE-IDENTITY之前的任何单词的方式:Regex: A-Z characters only 但是,您需要进行IsMatch检查,例如:     System.Text.RegularExpressions.Regex.IsMatch(s,sPattern,System.Text.RegularExpressions.RegexOptions.IgnoreCase),其中s是您的输入字符串,sPattern是您的正则表达式,最后一个参数是用于进行匹配的一些选项。