-5

假设我有一个文本文件,其中包含以下行。我想通过匹配(“和”)来获取引号中的两个值,这样我就可以检索 ABC 和 DEF 并将它们放在字符串列表或其他东西中,这样做的最佳方法是什么?太烦人了

如果EXAMPLEA(“ABC”)和EXAMPLEB(“DEF”)

4

4 回答 4

0

最好的办法...

List<string> matches=Regex.Matches(File.ReadAllText(yourPath),"(?<="")[^""]*(?="")")
                          .Cast<Match>()
                          .Select(x=>x.Value)
                          .ToList();
于 2013-01-03T13:49:03.390 回答
0

假设双引号之间的值不能包含转义双引号的情况可能如下所示:

 var text = "If EXAMPLEA(\"ABC\") AND EXAMPLEB(\"DEF\")";
 Regex pattern = new Regex("\"[^\"]*\"");

 foreach (Match match in pattern.Matches(text))
 {
     Console.WriteLine(match.Value.Trim('"'));
 }

但这只是您可以做到的众多方法之一,也许不是最聪明的方法。自己试试吧!

于 2013-01-03T13:42:45.873 回答
0

这种模式应该可以解决问题:

\"([^"]*)\"

        string str = "If EXAMPLEA(\"ABC\") AND EXAMPLEB(\"DEF\")";
        MatchCollection matched = Regex.Matches(str, @"\""([^\""]*)\""");
        foreach (Match match in matched)
        {
            Console.WriteLine(match.Groups[1].Value);
        }

请注意,引号在实际代码中加倍,以便对其进行转义。并且代码引用组 [1] 来获取括号内的部分。

于 2013-01-03T13:55:16.697 回答
0
IEnumerable<string> matches =
    from Match match
    in Regex.Matches(File.ReadAllText(filepath), @"\""([^\""]*)\""")
    select match.Groups[1].Value;

其他人已经发布了一些答案,但我考虑到您只是想要ABC并且DEF在您的示例中,没有引号并将其保存在IEnumerable<string>.

于 2013-01-03T14:06:44.343 回答