需要c#中的正则表达式帮助
本文关键字:正则表达式 帮助 需要 | 更新日期: 2023-09-27 18:14:35
我当前的正则表达式是这样的:
(?<name>['w'-"]+)[ 'n]+MODULE-IDENTITY
它搜索MODULE-IDENTITY,然后返回前面的单词(带有-和"符号)。现在我想添加一些东西来检查MODULE-IDENTITY之前的单词是否为DOG,它不会导致匹配。
有人能帮忙吗?
对于这个特定的例子:
(?<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
}
}