Regex pour quoi que ce soit entre []
J'ai besoin de trouver l'expression régulière pour []
Par exemple, si la chaîne est - Hi [Pile], Voici mon [Tag] dont j'ai besoin pour [Trouver].
Il doit retourner
Pile, Tag, Trouver
- Sur quelle plateforme? Dans quel langage de programmation?
- asp.net. Je suis en utilisant les Regex.IsMatch()
- Peut-il y être imbriquées à l'matchs:
foo [bar[baz]] done
où vous voulez prendrebar[baz]
? Ou peut-êtrefoo [bar\\]baz] done
où vous voulez prendrebar]baz
? Peut-il y avoir une nouvelle ligne(s) entre[
et]
?
Vous devez vous connecter pour publier un commentaire.
Assez simple, vous avez juste besoin de (1) à s'échapper de l'supports avec des barres obliques inverses, et (2) l'utilisation
(.*?)
de capturer le contenu.Les parenthèses sont un groupe capturé, ils capturent leur contenu pour l'utiliser plus tard. Le point d'interrogation après
.*
fait de la mise en correspondance non-greedy. Cela signifie qu'il va correspondre à la correspondance la plus courte possible, plutôt que la plus longue. La différence entre les cupides et les non-greedy vient quand vous avez plusieurs matches en un ligne:Un gourmand match va trouver la chaîne la plus longue possible entre les deux séries de crochets. Ce n'est pas juste. Un non-gourmand match va se trouver le plus court:
De toute façon, le code sera à la fin à la recherche comme:
devrait fonctionner. Vous pourriez avoir à changer le groupe correspondant si vous avez besoin d'inclure des caractères spéciaux ainsi.
En fonction de ce que l'environnement vous dire:
]
même dans Emacs syntaxe.]
seulement besoin de s'échapper à l'intérieur du jeu de caractères, et non en dehors d'elle (même si elle n'a pas de mal à y échapper...)..NET de la syntaxe, de prendre soin de plusieurs incorporé parenthèses:
\[ ( (?: \\. | (?<OPEN> \[) | (?<-OPEN> \]) | [^\]] )*? (?(OPEN)(?!)) ) \]
Compte le nombre de ouvert
[
sectionsOPEN
et réussit seulement siOPEN
est de 0 à la fin.