3

2 つのスペースに基づいて文字列を 2 つに分割できます。

string Line = "1  2";

Regex.Split(Line, "  ");

=> 1、2

例外を追加したいと思います。この例に示すように、「[ ] で囲まれていない」場合にのみ分割します。

string Line = "1  2  [1  2]";

Regex.Split(Line, "  ");

=> 1, 2, [1 2]

正規表現を介してこれをかなり簡単に達成できますか? ちなみに私は.NETを使っています。

4

1 に答える 1

2

]次の開始[または文字列の終わりの前に終了がないことをアサートする先読みを使用できます。

Regex.Split(Line, @"[ ]+(?![^\[\]]*\])");

[...]ただし、ネストされた構造がある場合、これは失敗します。先読みは実際の一致の一部ではないことに注意してください。何も消費せずに後続をチェックするだけです。私が使用した先読みの中で、[^\[\]]これは否定された文字クラスであり、あらゆる種類の角括弧を除くあらゆる文字に一致します。

また、これは 1 つ以上のスペースで分割されることに注意してください。少なくとも 2 つが必要な場合は、 を に置き換え[ ]+[ ]{2,}正確に 2 つが必要な場合は に置き換えます[ ]{2}

ルックアラウンドについてさらに読む。

于 2012-11-16T15:48:42.513 に答える