括弧内のすべてに一致させたいのですが、結果は括弧も除外する必要があります。
例:
初期化(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;
ゼロ幅アサーションを常に使用していると非難する人もいます。
resultString = Regex.Match(subjectString, @"(?<=\().+?(?=\))").Value;
しかし、彼らはあなたが望むことを正確に行います。キャプチャしたくないものはキャプチャしないでください。
正規表現を試してください@"\((.*?)\)"
編集:また、結果は0ではなくグループ1になります。グループ0には、最初の括弧で囲まれた値ではなく、正規表現の結果全体が含まれている必要があります。
内側のparanthesisを削除して、再試行してください。
_new Regex(@"(\([^\)]+\))");
_
正規表現でparanthesisをエスケープしない場合、グループマッチを使用していると、paranthesis内のコンテンツのみが返されます。したがって、new Regex(@'(a)(b))'
がある場合、一致1はaになり、一致2はbになります。マッチ0はマッチ全体です。
Regex searchTerm = new Regex(@"\(([^\)]*)\)");
これを試して:
var pattern = @".*public.*(.*\(.*\))";
Regex.Matches(input,pattern)