正则表达式接受所有字符串,错误
本文关键字:字符串 错误 正则表达式 | 更新日期: 2023-09-27 18:12:20
我试图子字符串,如果他们有一定的格式。子字符串Regex查询为[CENAOD(xyx)]
。我已经做了下面的代码,但当运行这个循环它说所有的结果匹配这是错误的。我哪里做错了?
string strRegex = @"('[CENAOD'(('S|'W)*')'])*";
string strCenaOd = sReader["intro"].ToString()
if (Regex.IsMatch(strCenaOd, strRegex, RegexOptions.IgnoreCase))
{
string = (want to read content of ( ) = xyz in example)
}
移除外部( ... )*
。
说明没有匹配也是好的匹配。
或者用+
代替*
除了@Kent和@leppie的答案之外,regex周围的代码也需要修改。我想这就是你想要的:
string strRegex = @"'[CENAOD'(([^)]*)')']";
string strCenaOd = sReader["intro"].ToString();
Match m = Regex.Match(strCenaOd, strRegex, RegexOptions.IgnoreCase);
if (m.Success)
{
string content = m.Groups[1];
// ...
}
IsMatch()
是一个简单的是或否检查,它不提供任何方法来检索匹配的文本。
我特别想评论('S|'W)*
,从你的正则表达式。首先,'S|'W
是一种非常低效的匹配任何字符的方法。.
通常是您所需要的,但正如Kent指出的那样,[^)]
(即,除了)
之外的任何字符)在这种情况下更合适。此外,通过将*
放在圆括号之外,您将只捕获最后一个字符。([^)]*)
将它们全部捕获。
如果你说"all strings",那么:
'[CENAOD'([^')]*')']