-5

以下の行を含むテキストファイルがあるとします。("と")を一致させて引用符内の両方の値を取得したいので、ABCとDEFを取得して文字列リストなどに入れます。これを行うための最良の方法は何ですか?とても迷惑です

例A( "ABC")および例B( "DEF")の場合

4

4 に答える 4

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 に答える
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('"'));
 }

しかし、これは実行できる多くの方法の 1 つにすぎず、おそらく最も賢明な方法とは言えません。自分で何かを試してみてください!

于 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

最良の方法...

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