1

次の文字列を正規表現で別の行に分割しようとしています

[property1=text1][property2=text2] 

望ましい結果は次のようになります

property1=text1
property2=text2

これが私のコードです

string[] attrs = Regex.Split(attr_str, @"\[(.+)\]");

結果が正しくない、おそらく何か間違ったことをしている

ここに画像の説明を入力してください

更新:提案された回答を適用した後。これで、スペースと空の文字列が表示されます

ここに画像の説明を入力してください

4

4 に答える 4

5

.+貪欲な試合なので、可能な限りつかみます。

どちらかを使用してください

\[([^]]+)\]

また

\[(.+?)\]

前者の場合、マッチング]が許可されないため、「可能な限り」が短くなります。2つ目は、欲張りでない一致を使用します。

于 2012-07-09T15:49:53.267 に答える
4

あなたのドットも中かっこをつかんでいます。中かっこを除外する必要があります。

\[([^]]+)\]

[^]]括弧を除くすべての文字に一致します。

于 2012-07-09T15:50:05.003 に答える
2

'lazy'指定子を追加してみてください:

Regex.Split(attr_str, @"\[(.+?)\]"); 
于 2012-07-09T15:52:24.300 に答える
2

試す:

var s = "[property1=text1][property2=text2]";
var matches = Regex.Matches(s, @"\[(.+?)\]")
    .Cast<Match>()
    .Select(m => m.Groups[1].Value);
于 2012-07-09T15:52:43.250 に答える