web-dev-qa-db-fra.com

Les expressions rationnelles C # correspondent à tout ce qui est entre parenthèses

Je veux faire correspondre quoi que ce soit entre parenthèses mais le résultat doit également exclure les parenthèses. 

Exemples:
Initialize (P90W)
Frein (45X) 

Résultat:
990W
45X 

notez les résultats sans les parenthèses.

J'ai essayé de faire ce travail mais en vain j'ai essayé quelques variations mais je sais que c'est une chose simple qui me manque et je ne veux pas utiliser Remplacer pour le réaliser.

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
Michael D. Irizarry

Certaines personnes m'accusent d'utiliser des assertions de largeur zéro tout le temps:

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

Mais ils font exactement ce que vous voulez. Ne capturez pas ce que vous ne voulez pas capturer.

32
FailedDev

essayez regex @"\((.*?)\)"

EDIT: le résultat sera également groupe 1 et non 0, le groupe 0 devrait contenir le résultat entier de l'expression rationnelle, pas la première valeur entre parenthèses

11
Matthew

Retirez la parenthèse interne et essayez à nouveau:

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

Si vous n'échappez pas à la parenthèse dans regex, si vous utilisez la correspondance de groupe, le contenu contenu dans la parenthèse sera uniquement renvoyé. Donc si vous avez, new Regex(@'(a)(b))', le match 1 sera un et le match 2 sera b. Le match 0 est le match entier.

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

essaye ça: 

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