2012-02-03 3 views
3

L'implémentation Regex de Mono comporte un bogue qui signifie qu'il ne gère pas correctement la soustraction de classe de caractères regex.Conseil sur la refactorisation d'une soustraction de classe de caractères regex

IE: "[ab- [a]]" devrait être le jeu de caractères "[b]".

Par exemple, le code suivant sur .NET affichera "The \ ncat \ nsat \ non \ nthe \ nmat".
Cet exemple contient la regex simplifiée que j'essaie de faire fonctionner sur mono. Mais en utilisant mono l'expression rationnelle ne correspond à rien.

Est-ce que quelqu'un a des suggestions sur la façon d'obtenir le même affect avec l'écriture régulière d'une manière différente?

+0

Y a-t-il un paren manquant dans votre modèle? – krlmlr

+0

mis à jour - merci. – Tom

Répondre

4

Avez-vous envisagé d'utiliser un negative lookahead? Tels que:

"(?![" + listOfUnicodeChars + "])[\\p{Lu}" + ... + "]" 
+0

Merci pour l'exemple et le lien. Lookahead négatif semble bien fonctionner en mono. – Tom

+1

+1. Donc la regex complète serait '" (? :(?! EXCLUDE) INCLUDE) + "', où INCLUDE et EXCLUDE sont vos deux classes de caractères. –

+0

Droite. Mon exemple correspond à un seul caractère. – krlmlr

Questions connexes