0

正規表現に関しては、私は本当にn00bです。[----anything inside-----]たとえば、文字列をどこにでも分割しようとしています。

string s = "Hello Word my name_is [right now I'm hungry] Julian";
string[] words = Regex.Split( s, "------");

結果 "Hello Word my name_is "" Julian"

4

3 に答える 3

5

使用する正規表現は次のとおりです。

Regex.Split( s, "\\[.*?\\]" );

角括弧は (文字グループを指定する) 特殊文字であるため、バックスラッシュでエスケープする必要があります。角括弧内には、右角括弧を除く任意の文字列が必要です。それを処理するにはいくつかの方法があります。1 つは指定することです[^\]]*(「閉じ角括弧ではない」ことを明示的に指定します)。もう 1 つは、回答で使用したように、一致の後に疑問符を付けて、一致が貪欲ではないことを指定することです。これにより、正規表現プロセッサはできるだけ多くの文字を貪欲に消費するのではなく、次の表現が一致するとすぐに停止するように指示されます。

于 2012-06-12T17:16:05.873 に答える
1

@"\[.*?\]"テキストの括弧に一致します

于 2012-06-12T17:16:21.637 に答える
0

それを書く別の方法:

Regex.Split(str, @"\[[^]]*\]");
于 2012-06-12T17:20:52.857 に答える