4

私はフォームのいくつかの文字列を持っています

string strA = "Cmd:param1:'C:\\SomePath\SomeFileName.ext':param2";
string strB = "Cmd:'C:\\SomePath\SomeFileName.ext':param2:param3";

この文字列を「:」で分割して、N 個のパラメーターを抽出できるようにします。一部のパラメーターには、[明示的に] 示されているようにファイル パスを含めることができますが、括弧内の「:」で分割したくありません。正規表現でこれを行うことができますが、コロンの両側に「'」がない場合にのみ正規表現を分割する方法について混乱しています。

私は試みました

string regex = @"(?<!'):(?!')"; 
string regex = @"(?<!'(?=')):";

これは、左側に "'" がなく、右側に "'" がない場合 (ネガティブ ルック ビハインド/アヘッド) にのみ一致を継続しますが、これはまだ 'C:\SomePath\SomeFileName.ext' に含まれるコロンで分割されています。

必要に応じてこの正規表現を修正するにはどうすればよいですか?

御時間ありがとうございます。


注:次の正規表現が機能することがわかりました。しかし、これを行うより良い方法があるかどうか知りたいですか?

string regex = @"(?<!.*'.*):|:(?!.*'.*)";
4

4 に答える 4