0

文字列から値を取得しようとしています1-1:0.0.0(123123) ここにコードがあります

string str = "\r\n1-1:0.0.0(123123)\r\n";
string patt = @"1-1:0.0.0(\(.*?)\)\s";
Match match = Regex.Match(str, patt,RegexOptions.IgnoreCase);
string v = match.Groups[1].Value;

問題は、明確な値が得られないことです="(123123"
誰かが最初に丸括弧がある理由を説明できますか?:/

4

4 に答える 4

3

オープニングラウンドブラケットの一致\(は、キャプチャグループの開始(にあります。

に置き換え(\(ます\((

また、適切な対策のために交換0.0.0してください。0\.0\.0

于 2013-01-30T12:23:29.230 に答える
2

括弧のエスケープは正しくありません。

パターンを次のように変更します(円記号は最初の開口部の前にあることに注意してください()。

@"1-1:0.0.0\((.*?)\)\s";
于 2013-01-30T12:21:51.260 に答える
2

エスケープ文字(\(が置き忘れられています:

フォローしてみてください

string str = "\r\n1-1:0.0.0(123123)\r\n";
string patt = @"1-1:0.0.0\((.*?)\)\s";
Match match = Regex.Match(str, patt, RegexOptions.IgnoreCase);
string v = match.Groups[1].Value;

これは印刷されます

123123
于 2013-01-30T12:21:51.570 に答える
1

キャプチャグループは(\(.*?)、つまり、キャプチャグループを作成する括弧のペアであり、内容は\(.*?-文字通りの開き括弧と任意の文字の貪欲でないシーケンスに一致します。

また.、パターン内の文字はリテラルドットと一致していませんが、どの文字でも、ターゲット文字列にドットが含まれているように見えるため、これを指摘します。

于 2013-01-30T12:22:17.030 に答える