0

スペースと ( または ( だけの文字列があります。( のスペースに基づいて、文字列を 2 つに分割する必要があります。

以下はサンプル文字列です

1234(207) 
1234 (207)
1234 207

上記のすべてのシナリオの結果は次のようになります。

string1=1234
string2=(207)

私はC#でコードを持っています

Regex r = new Regex(@"(^.*?)\s+(.*?$)"); 
Match m = r.Match(strAbove);
firstPart = m.Groups[1].Value;
secondPart=m.Groups[2].Value;

上記のシナリオの正規表現パターンは何になりますか。

前もって感謝します。

4

2 に答える 2

1

実際のテストがなければ、いくつかの小さな問題があるようです:

Regex r = new Regex(@"^(\d+)\s*(\(\d+\))$"); 

まず、^ と $ は、キャプチャ括弧の外に出る必要があります。空白は 1 以上ではなく 0 以上であるため、+ ではなく * にする必要があります。最後に、リテラル括弧はエスケープする必要があります。

于 2012-08-29T12:29:12.000 に答える
0

括弧を含まない例がありますが、出力に含める必要があるため、後でそれらを追加するか、それに応じて入力文字列を再フォーマットする必要があります。少し簡単な前者を実行します。

var match = Regex.Match(s, @"^(\d+)[ (]+(\d+)";
var string1 = match.Groups[1].Value;
var string2 = "(" + match.Groups[2].Value + ")";
于 2012-08-29T12:42:29.253 に答える