2013-08-06 4 views
2

J'ai déjà vu des questions sur l'inversion d'expressions régulières, mais je n'ai pas pu appliquer les solutions à OpenRefine et le faire fonctionner.OpenRefine: Inverser une expression régulière

Par exemple, supposons que j'ai un champ de code où la plupart des entrées ont la forme

^\d{5}-\d{4}$ 

Je veux filtrer toutes les entrées pour voir ce qui reste à l'aide GREL regex. Comment créer une expression régulière qui trouve toutes les chaînes sans le formulaire ci-dessus dans Openrefine?

+0

Est-ce que votre moteur est négatif? –

+1

OpenRefine incorpore Java.Util.regex, donc je suppose qu'il supporte les lookaheads négatifs. –

Répondre

2

Vous pouvez utiliser des solutions de contournement négatives afin de faire correspondre quelque chose sans une certaine sous-chaîne. Dans votre cas, il correspondrait à tout sans 5 chiffres suivi d'un tiret suivi de 4 chiffres.

^((?!\d{5}-\d{4}).)*$

Un autre travail autour de tout match sans une certaine sous-chaîne est de remplacer simplement que sous-chaîne par "", puis saisir toutes les entrées.

+0

Cela fonctionne très bien! Merci. Existe-t-il un moyen de le modifier pour renvoyer uniquement les entrées non nulles (qui ne correspondent pas non plus au modèle)? – Rob

+0

Heureux que cela fonctionne, vous pouvez remplacer le '*' par un '+', et cela devrait également ignorer toutes les entrées non nulles. –

+0

Parfait. Merci! – Rob

Questions connexes