在C#.net应用程序中使用正则表达式进行验证

在C#.net应用程序中使用正则表达式进行验证,.net,regex,.net,Regex,我们要验证提供的除虫器的input.DAT文件记录 在我们的.net应用程序中,我们可以根据提供的删除器解析输入文件,其中所有的删除器都是正确的, 例如:“测试”、“数据”、“案例信息” 上述文件中的记录/行将成功解析,现在我们对以下格式的行/记录有问题: “测试”,数据,“案例信息” (您可以看到没有用“data”值包围的文本限定符&因此,在解析文件中的数据时会产生问题) 因此,我们决定使用正则表达式来查找不包含TextQualifier的有问题的值 为了解决这个问题,我们创建了下面的正则表达

我们要验证提供的除虫器的input.DAT文件记录

在我们的.net应用程序中,我们可以根据提供的删除器解析输入文件,其中所有的删除器都是正确的, 例如:“测试”、“数据”、“案例信息”

上述文件中的记录/行将成功解析,现在我们对以下格式的行/记录有问题:

“测试”,数据,“案例信息” (您可以看到没有用“data”值包围的文本限定符&因此,在解析文件中的数据时会产生问题)

因此,我们决定使用正则表达式来查找不包含TextQualifier的有问题的值

为了解决这个问题,我们创建了下面的正则表达式来查找有问题的值, \x2C([^\x22].?[^\x22])\x2C

使用上述正则表达式,它在第一个和最后一个字段之间的记录中工作

“Test”、data、“caseinformation”->正则表达式成功地解析了这些记录,并将数据作为有问题的输出字段提供

此记录的“Test”、“data”、caseinformation->正则表达式与上一个值不匹配

有谁能帮我们纠正匹配第一个或最后一个值的正则表达式吗


谢谢。

有类似的东西吗

/^"\w+","?(.+)"?,"\w+"$/
^((?:“(?:”)+)“(?:”[^,]*)(?:$)+$
将匹配整行,然后您可以使用match.Groups[1]。捕获以获取数据(不带引号)。此外,我让
“我的名字在引号中”
成为有效字符串

string mystring = "\"Test\",\"data\",\"CaseInforation\"";
MatchCollection matches = Regex.Matches(mystring, "^(?:(?:\"((?:\"\"|[^\"])+)\"|([^,]*))(?:$|,))+$");
match[0].Value = "Test","data","CaseInforation"
match[0].Groups[0].Value => "Test","data","CaseInforation"
match[0].Groups[0].Captures[0].Value => "Test","data","CaseInforation"
match[0].Groups[1].Value => CaseInforation
match[0].Groups[1].Captures[0].Value => Test
match[0].Groups[1].Captures[1].Value => data
match[0].Groups[1].Captures[2].Value => CaseInforation
一个简单的
[^\”,]+
应该为每个值提供一个匹配项,只要值之间有“,”和。如果值中有任何值,该值将被拆分为两个

比如说:

foreach(Match match in Regex.Matches(data, "[^\",]+"))
{
    Console.WriteLine(match.Value);//or whatever
}

虽然如果你有
“Test”、data、“CaseIn”foration“
你会得到Test、data、CaseIn和foration。

我发布了一个解决方案,可能会满足你的需要。给定regEx可以很好地匹配引号中的字符串。但是我们有没有办法直接得到与提供的string.ex不匹配的值。“ID”,“File Name”,“Subject”,From(对于这个提供的字符串,regex匹配所有包含“”的值,表示“ID”,“File Name”,“Subject”),现在我们有没有办法得到上面字符串中不匹配的sting