我目前的正则表达式看起来有点像这样:
(?<name>[\w\-"]+)[ \n]+MODULE-IDENTITY
它搜索MODULE-IDENTITY然后返回之前的单词(带 - 和&#34;符号)。现在我想添加一些东西来检查MODULE-IDENTITY之前的单词是否允许说DOG它不会导致匹配。
有人可以帮忙吗?
答案 0 :(得分:1)
对于这个具体的例子:
(?<name>[\w\-"]+)(?<!DOG)[ \n]+MODULE-IDENTITY
这将匹配,例如
测试
MODULE-IDENTITY
但不是
DOG
MODULE-IDENTITY
答案 1 :(得分:0)
这是排除单词dog
(?<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是您的正则表达式,最后一个参数是用于进行匹配的一些选项。