web-dev-qa-db-ja.com

C#正規表現は括弧内のすべてに一致します

括弧内のすべてに一致させたいのですが、結果は括弧も除外する必要があります。

例:
初期化(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;
17

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

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

しかし、彼らはあなたが望むことを正確に行います。キャプチャしたくないものはキャプチャしないでください。

34
FailedDev

正規表現を試してください@"\((.*?)\)"

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

11
Matthew

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

_new Regex(@"(\([^\)]+\))");
_

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

3
Savas Vedova
Regex searchTerm = new Regex(@"\(([^\)]*)\)");
0
kol

これを試して:

var pattern = @".*public.*(.*\(.*\))";
Regex.Matches(input,pattern)
0
oguzh4n