20

括弧内のものと一致させたいのですが、結果から括弧も除外する必要があります。

例:
初期化(P90W)
ブレーキ(45X)

結果:
990W
45X

括弧なしで結果に注意してください。

私はこれを機能させようとしてきましたが、いくつかのバリエーションを試してみましたが、役に立ちませんでしたが、それは私が見逃している単純なものであり、それを達成するためにReplaceを使用したくありません。

var item = "Brake(45X)"
Regex searchTerm = new Regex(@"\((.*)\)");
var value = (searchTerm.Match(item).Groups.Count > 0) ?
    searchTerm.Match(item).Groups[0].Value : string.Empty;
4

5 に答える 5

40

幅ゼロのアサーションを常に使用していると非難する人もいます。

resultString = Regex.Match(subjectString, @"(?<=\().+?(?=\))").Value;

しかし、彼らはあなたが望むことを正確に行います。撮りたくないものは撮らない。

于 2011-12-15T20:38:15.337 に答える
12

正規表現を試す@"\((.*?)\)"

編集: また、結果は 0 ではなくグループ 1 になります。グループ 0 には、最初のかっこで囲まれた値ではなく、正規表現の結果全体が含まれている必要があります。

于 2011-12-15T20:35:25.007 に答える
3

内側の括弧を削除して、再試行してください。

new Regex(@"(\([^\)]+\))");

正規表現で括弧をエスケープしない場合、グループ マッチを使用している場合、括弧内のコンテンツのみが返されます。したがって、 がある場合new Regex(@'(a)(b))'、マッチ 1 は a になり、マッチ 2 は b になります。マッチ 0 はマッチ全体です。

于 2011-12-15T20:35:55.790 に答える
0

これを試して:

var pattern = @".*public.*(.*\(.*\))";
Regex.Matches(input,pattern)
于 2015-08-05T21:40:18.643 に答える
0
Regex searchTerm = new Regex(@"\(([^\)]*)\)");
于 2011-12-15T20:35:19.027 に答える