1 votes

Expression régulière .NET pour l'analyse d'expressions régulières

Je veux renvoyer les correspondances d'une chaîne d'expressions régulières. La chaîne d'expression régulière est :

(?<TICKER>[A-Z]+)(?<SPACE>\\s)(?<MONTH_ALPHA_ABBREV>Jan|Feb|Mar|Apr|May|Jun|Jul|Sep|Oct|Nov|Dec)(?<SPACE>\\s)(?<DAY>\\d+)(?<SPACE>\\s)(?<YEAR_LONG>[2][0][0-9][0-9])(?<SPACE>\\s)(?<STRIKE_DOLLAR>\\d+(?=[.]))[.](?<STRIKE_DECIMAL>(?<=[.])\\d+)(?<SPACE>\\s)(?<PUTCALL_LONG>Call|Put)

Et je veux obtenir des correspondances pour tous les noms de groupe et tous les éléments entre crochets (y compris les crochets) en dehors des parenthèses ouvertes et fermées. J'ai cette expression rationnelle :

((?<=[<])([A-Z]|[_])+(?=[>]))|(\\[.\\])

Mais cela renvoie les éléments entre crochets à l'intérieur de la parenthèse. Pour être plus spécifique, ce sont les correspondances que je veux obtenir de la regex en haut (gardez à l'esprit que ceci doit être flexible pour toute regex) :

TICKER
SPACE
MONTH_ALPHA_ABBREV
SPACE
DAY
SPACE
YEAR_LONG
SPACE
STRIKE_DOLLAR
[.]
STRIKE_DECIMAL
SPACE
PUTCALL_LONG

2voto

roufamatic Points 6773
((?<=[<])([A-Z]|[_])+(?=[>]))|(?<!\([^\)]*)\[[^\]]+\]

Utilisez également le @"" afin de ne pas avoir à échapper les antislashes (comme vous l'avez fait dans votre exemple de code). Ce chiot est suffisamment illisible.

0voto

vfilby Points 5975

Lorsque vous faites correspondre votre regex, vous pouvez définir les options pour inclure RegexOptions.ExplicitCapture qui ne capturera que les groupes nommés, normalement tout ce qui se trouve entre parenthèses est capturé. Vous pouvez ensuite nommer tous vos groupes de capture en utilisant ce format (?<captureGroupName>[insertRegExHere]) . Cela vous permet de capturer ce que vous voulez et d'utiliser des noms sensés.

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