397 votes

Expression régulière pour trouver une chaîne de caractères comprise entre deux caractères en EXCLUANT les délimiteurs.

J'ai besoin d'extraire d'une chaîne de caractères un ensemble de caractères qui sont inclus entre deux délimiteurs, sans renvoyer les délimiteurs eux-mêmes.

Un exemple simple devrait être utile :

Cible : extrait la sous-chaîne entre les crochets, sans retourner les crochets eux-mêmes.

Chaîne de base : This is a test string [more or less]

Si j'utilise le registre suivant, par exemple

\\\[.\*?\\\]

Le match est [more or less] . J'ai besoin d'obtenir seulement more or less (sans les parenthèses).

Est-il possible de le faire ?

0 votes

4voto

techguy2000 Points 687

Je voulais trouver une chaîne entre / et #, mais # est parfois optionnel. Voici la regex que j'utilise :

  (?<=\/)([^#]+)(?=#*)

1voto

Jamaxack Points 1489

Voici comment je me suis passé de '[' et ']' en C# :

        var text = "This is a test string [more or less]";
        //Getting only string between '[' and ']'
        Regex regex = new Regex(@"\[(.+?)\]");
        var matchGroups = regex.Matches(text);
        for (int i = 0; i < matchGroups.Count; i++)
        {
            Console.WriteLine(matchGroups[i].Groups[1]);
        }

La sortie est :

more or less

-1voto

Nico Points 678

Si vous avez besoin d'extraire le texte sans les parenthèses, vous pouvez utiliser bash awk

echo " [hola mundo] " | awk -F'[][]' '{print $2}'

résultat :

hola mundo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X