3 votes

Comment puis-je convertir une regex Perl pour qu'elle fonctionne avec Boost::Regex ?

Quel est l'équivalent Boost::Regex de cette regex Perl pour les mots qui se terminent avec ing o ed o en ?

/ing$|ed$|en$/

...

3voto

Leon Timmermans Points 23230

La différence la plus importante est que les regexps en C++ sont des chaînes de caractères, donc toutes les séquences backslash spécifiques aux regexps (telles que \w y \d doivent être entre guillemets ( "\\w" y "\\d" )

2voto

Tim Pietzcker Points 146308
/^[\.:\,()\'\`-]/

devrait devenir

"^[.:,()'`-]"

Le délimiteur spécial de l'expression rationnelle Perl / n'existe pas en C++, donc les regex sont juste une chaîne. Dans ces chaînes, vous devez prendre soin d'échapper correctement les backslashes ( \\ pour chaque \ dans votre regex original). Dans votre exemple, cependant, tous ces antislashs étaient inutiles, donc je les ai complètement supprimés.

Il y a d'autres problèmes ; certaines fonctionnalités Perl (comme le lookbehind à longueur variable) n'existent pas dans la bibliothèque Boost, pour autant que je sache. Il se peut donc qu'il ne soit pas possible de traduire simplement n'importe quelle expression rationnelle. Vos exemples devraient être parfaits, cependant. Bien que certains d'entre eux soient bizarres. .*[0-9].* correspondra à toute chaîne de caractères qui contient un chiffre quelque part, et non pas à all numbers .

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