2010-11-05 46 views

Répondre

6

La plupart des fonctionnalités des expressions rationnelles .NET sont disponibles en Python; Cependant, il manque quelques éléments:

  1. Python ne prend pas en charge la répétition de variables à l'intérieur de lookbehinds, seulement de longueur fixe.
  2. Python utilise une syntaxe différente pour les captures nommées.
  3. Python correspond différemment aux caractères Unicode.
  4. Python ne possède pas les groupes atomiques (?>...) ou les quantificateurs possessifs ++, *+, ?+.
  5. En Python, utilisez r"..." des chaînes brutes pour les expressions régulières, ou vous allez trébucher sur les barres obliques inverses.

Un complet list of differences can be found here.

Et si vous avez besoin de faire des conversions regex souvent, RegexBuddy peut le faire pour vous (tant que vous n'utilisez pas les fonctionnalités que le moteur de regex de destination n'a pas, bien sûr).

+0

Attendez que j'ai une copie de RegexBuddy. Quelle est la fonctionnalité appelée? – rook

+0

@Rook: Copiez la chaîne de votre code C#, ouvrez RegexBuddy, cliquez sur le bouton "Coller", "Coller depuis ..." et "Coller Regex depuis une chaîne C#", puis allez dans l'onglet "Utiliser" et choisissez Python . –

1

Les documents pour le re module couvrent la syntaxe Python regex. FWIW, la syntaxe est très similaire, sauf pour les substitutions.

1

En termes de mise en œuvre, je pense que les moteurs CLR et Python regex sont très proches, plus que l'un ou l'autre d'entre eux à d'autres langages comme Perl ou le PCRE. Par exemple, j'ai utilisé Expresso pour créer et tester des expressions régulières complexes que j'ai ensuite adaptées au code Python. Cela dit, je ne pense pas avoir jamais vu un convertisseur réel, mais comme ils sont si similaires, il devrait être relativement facile de les convertir manuellement (encore une fois, plus que si nous parlions d'autres implémentations).

This Cette page présente de bonnes comparaisons entre les différents moteurs, bien qu'elle se concentre sur les capacités plutôt que sur la similarité de la syntaxe.

0

Etes-vous sûr qu'il y a une incompatibilité? Au moins pour les éléments de base à moyen dans les expressions rationnelles, toutes les implémentations s'accordent à peu près sur la syntaxe, sauf peut-être si les parens doivent être échappés ou non.

+0

Oui, je suis sûr à 150% que ces expressions régulières lèvent une exception quand elles essayent de les utiliser. – rook