0

私は正規表現が初めてで、助けが必要です。この問題に似たトピックをいくつか読みましたが、解決方法がわかりませんでした。

中かっこのペアの内側にないすべての空白で文字列を分割する必要があります。中括弧の外側の連続する空白は、1 つの空白と見なされます。

{ TEST test } test { test test} {test test  }   { 123 } test  test 

結果:

{ TEST test } 

test 

{ test test} 

{test test  }   

{ 123 } 

test  

test
4

3 に答える 3

3
\{[^}]+\}|\S+

これは、中かっこで囲まれた一連の文字、または一連の非スペース文字のいずれかに一致します。文字列からすべての一致を取得すると、必要なものが得られます。

于 2013-01-04T22:06:11.207 に答える
1

ここにまさにあなたが望むものがあります...

string Source = "{ TEST test } test { test test} {test test } { 123 } test test";
List<string> Result = new List<string>();
StringBuilder Temp = new StringBuilder();
bool inBracket = false;
foreach (char c in Source)
{
    switch (c)
    {
        case (char)32:       //Space
            if (!inBracket)
            {
                Result.Add(Temp.ToString());
                Temp = new StringBuilder();
            }
            break;
        case (char)123:     //{
            inBracket = true;
            break;
        case (char)125:      //}
            inBracket = false;
            break;
    }
    Temp.Append(c);
}
if (Temp.Length > 0) Result.Add(Temp.ToString());
于 2013-01-04T22:16:44.397 に答える
0

次を使用して問題を解決しました:

StringCollection information = new StringCollection();  
foreach (Match match in Regex.Matches(string, @"\{[^}]+\}|\S+"))  
{  
   information.Add(match.Value);  
}

助けてくれてありがとう!!!

于 2013-01-07T20:50:51.700 に答える