0

正規表現は、私が自分で書きたいと思っていたものの 1 つです。正規表現がどのように機能するかについての基本的な理解は持っていますが、正規表現がまだ広く存在しない場所で使用する必要がある状況に陥ったことはありません。 Web 上 (電子メール アドレスの検証など)。

私が抱えている問題は、コンマで区切られた文字列を受け取っていることですが、一部の文字列値にはコンマも含まれています。たとえば、私は受け取るかもしれません:

$COMMAND=1,2,3,"string","別の,string",4,5,6

通常、このようなものを受信することはありませんが、この文字列配列を送信するデバイスはそれを許可しているため、発生した場合に応じて配列を分割できるようにしたいと考えています.

したがって、明らかにそのように分割するだけです(一部rawResponse$COMMAND=削除された場所:

string[] response = rawResponse.Split(',');

もったいない!正規表現はこの仕事に適したツールだと思います。誰か私がそれを書くのを手伝ってくれませんか?

4

2 に答える 2

5
string rawResponse = @"1,2,3,""string"",""another,string"",4,5";
string pattern = @"[^,""]+|""([^""]*)""";
foreach(Match match in  Regex.Matches(rawResponse, pattern))
       // use match.Value

結果:

1
2
3
"string"
"another,string"
4
5

文字列の配列として応答が必要な場合は、Linq を使用できます。

var response = Regex.Matches(rawResponse, pattern).Cast<Match>()
                    .Select(m => m.Value).ToArray();
于 2013-01-13T15:57:12.487 に答える
0
string originalString = @"1,2,3,""string"",""another,string"",4,5,6";
string regexPattern = @"(("".*?"")|(.*?))(,|$)";
foreach(Match match in  Regex.Matches(originalString, regexPattern))
{

}
于 2013-01-13T16:14:49.423 に答える