我有一个来自文件的行:; STRING WBSALT1()
和代码
if (!Regex.IsMatch(line, @"\s*(;)(.*)", RegexOptions.IgnoreCase))
{
//do
//stuff
}
由于某种原因,REGEX与文件中的那一行不匹配。我通过测试仪运行它,它捕获它就好了。有谁知道还有什么可能导致这个问题?
然而,它将与此匹配(在代码中,而不是在正则表达式测试器中)if (Regex.IsMatch(line, @"\s*(string)\s*(.*\()\s*(\d*)\)\s*;?(.*)", RegexOptions.IgnoreCase))
对我来说真的没有任何意义。我对文件中看起来类似的数千个其他行没有其他问题。有什么想法吗?
编辑:好的,所以我没有把它放在问题中,因为我觉得没必要。显然它是:
我的实际if
声明如下:
if (!Regex.IsMatch(line, @"\s*;.*") || !Regex.IsMatch(line, @"\s*(origin)\s*(.*)", RegexOptions.IgnoreCase))
现在,当我取消||
语句时,它正常工作。为什么这样做我不明白。也许有人对此有所了解?
答案 0 :(得分:4)
在我的环境中测试并按预期工作。
string line = "; STRING WBSALT1()";
if (!Regex.IsMatch(line, @"\s*(;)(.*)", RegexOptions.IgnoreCase))
{
//do
//stuff
}
想知道你是否也不打算“!”成为条件的一部分
if(! ...
此致
答案 1 :(得分:2)
只是为了添加你,如果你使用的是IgnoreCase
,则不需要设置.*
,你可能会丢失捕获组。您可能还想添加开始^
和结束$
行锚点。
string line = "; STRING WBSALT1()";
if (!Regex.IsMatch(line, @"^\s*;.*$")) {
// do something
}