Disons que mon entrée est fn(a(b,c),d) fn(a,d) fn(a(b),d)
et je veux a(b,c),d
comment pourrais-je écrire un motif pour obtenir tout à l'intérieur de la()? La 2ème fn() est facile le premier et le troisième, je ne sais pas comment faire correspondreRegex garder la trace de `)`
5
A
Répondre
5
Vous avez besoin balancing group definitions pour cela:
result = Regex.Match(subject,
@"(?<=\() # Make sure there's a (before the start of the match
(?> # now match...
[^()]+ # any characters except parens
| # or
\( (?<DEPTH>) # a (, increasing the depth counter
| # or
\) (?<-DEPTH>) # a), decreasing the depth counter
)* # any number of times
(?(DEPTH)(?!)) # until the depth counter is zero again
(?=\)) # Make sure there's a) after the end of the match",
RegexOptions.IgnorePatternWhitespace).Value;
2
Vous pouvez diviser
var output=Regex.Split(input,@"(?:\)|^)[^()]*(?:\(|$)");
Vous obtiendriez la sortie comme
a(b,()c),d
a,d
a(b),d
Questions connexes
- 1. jeu android - garder la trace du temps
- 2. Wix - Garder la trace des applications installées
- 3. Garder la trace des objets déjà vus
- 4. itérateur personnalisé: comment en garder la trace?
- 5. Garder la trace du temps avec Mbed
- 6. Garder la trace de la longueur lors de l'utilisation requestBodySourceIO
- 7. Garder la trace de plus de 40 valeurs de contrôle
- 8. Garder une trace de l'état de la page dans asp.net?
- 9. Comment garder la trace de plusieurs récepteurs de diffusion
- 10. Meilleure façon de garder une trace de la session facebook
- 11. Garder la trace de plusieurs threads sur l'iphone
- 12. comment garder trace de la page Web ouverte
- 13. Garder la trace d'un espace de coordonnées local d'objets
- 14. Sûr de définir sur this.state juste pour garder la trace?
- 15. garder une trace du texte de la zone richtext?
- 16. Comment garder une trace de l'heure dans la page JSP
- 17. Comment ruby garder une trace des variables
- 18. Comment garder une trace des objets C++
- 19. Android - Garder une trace des discussions
- 20. conDenSaTIon une liste, garder la trace des doublons
- 21. Faire face au téléchargement d'images (garder la trace) PHP
- 22. iOS achat in-app garder la trace des articles achetés
- 23. générique Python métaclasse pour garder la trace des sous-classes
- 24. Garder la trace des points utilisateurs (comme SO)
- 25. Garder la trace des ids dans NOSQL db (firebase)
- 26. Comment garder trace de l'index de tri avec Knockout-sortable?
- 27. Node.js: Comment garder une trace de mon utilisation de l'API?
- 28. Comment garder une trace de tous les messages
- 29. Comment garder une trace de mes cadres internes?
- 30. comment garder la trace de la valeur précédente avant de la changer en vb.net
Etes-vous donné un espace blanc? aracter comme séparateur? Vous pouvez essayer 'fn [(] (\ S *) [)]'. – abiessu
Est-ce que 'fn' peut contenir plus de' fn's, ou juste 'a' /' b'/'c'? Est-ce que l'entrée contient plusieurs 'fn', ou juste un? S'il y en a beaucoup, sont-ils simplement «fn» dans une rangée, ou peut-il être autre chose entre eux? Quelle est la profondeur de l'imbrication - est-ce que 'fn (a (b (c)))' est valide? – Kobi