1 votes

Les expressions rationnelles de C# ne fonctionnent pas comme je le souhaite

J'ai une chaîne d'entrée comme celle-ci :

\pard\nowidctlpar\qj\b0\scaps T accord \scaps0 i ce jour, \N{#DATEAGREEMENT#\} , par et entre [retiré] ( \ldblquote [retiré] \rdblquote ) ses successeurs et/ou ayants droit, dont l'adresse est la suivante dont l'adresse est [supprimée], et \{#TXTPLAINTIFF#\} , ( \ldblquote Le plaignant \rdblquote ) de _ __ _ __ _ __ , \{#TXTPLAINTIFFATTORNEY#\} , ( \ldblquote Le plaignant \rquote s Avocat \rdblquote ) \{#TXTATTORNEYFIRM#\} . \par

et je veux faire du parsing avec des regex.

Voici le code que j'utilise :

temp = Regex.Replace(temp, @"\\{#.*#\\}", "_____");

Le seul problème est qu'il correspond à l'ensemble le plus large, c'est-à-dire qu'il supprime tout le paragraphe parce que le paragraphe se termine par "#\}", comment puis-je faire pour correspondre à chaque groupe ? Par exemple, ce paragraphe devrait correspondre 4 fois au lieu d'une.

4voto

Vivin Paliath Points 40975

Avez-vous essayé de faire en sorte que le match ne soit pas avide ?

temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____");

1voto

Dan McClain Points 7036
temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____");

L'ajout d'un '?' au ''*'' permet d'effectuer une recherche non grégaire. Votre regex initiale effectuait une recherche gourmande, c'est-à-dire qu'elle recherchait la plus grande correspondance possible.

1voto

Powerlord Points 43989

Si je me souviens bien, l'ajout d'un ? fait passer un opérateur de gourmand à non gourmand, alors essayez ceci :

temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____");

1voto

Patrick Points 3893

Vous recherchez une évaluation paresseuse :

temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____");

peut le faire

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