it-swarm-pt.tech

Regex C # corresponde a qualquer coisa entre parênteses

Quero corresponder qualquer coisa entre parênteses, mas o resultado também deve excluir os parênteses.

Exemplos:
Inicializar (P90W)
Freio (45X)

Resultado:
990W
45X

observe os resultados sem os parênteses.

Eu tenho tentado fazer isso funcionar, mas sem sucesso Tentei algumas variações, mas sei que é uma coisa simples que estou perdendo e não quero usar o Replace para alcançá-lo.

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

Algumas pessoas me acusam de usar afirmações de largura zero o tempo todo:

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

Mas eles fazem exatamente o que você deseja. Não capture o que não deseja capturar.

34
FailedDev

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

EDIT: também o resultado será o grupo 1 e não 0, o grupo 0 deve conter o resultado inteiro da regex, não o primeiro valor entre parênteses

11
Matthew

Remova a parêntese interna e tente novamente:

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

Quando você não escapa da parêntese na regex, se você estiver usando a correspondência de grupo, ele retornará apenas o conteúdo dentro da parêntese. Portanto, se você tiver, new Regex(@'(a)(b))', a correspondência 1 será a e a correspondência 2 será b. A partida 0 é a partida inteira.

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

tente isto:

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