2017-02-16 1 views
3

J'essaye d'écrire une regex pour AvalonEdit.TextEditor pour marquer tout après la seconde | une certaine couleur.Syntaxe en surbrillance avec AvalonEdit

Exemple (valeur doit être une couleur):

action|key|value

J'essaie quelque chose comme ça, mais ça ne fonctionne pas parce que je ne peux pas préciser le groupe que je veux la couleur.

^[^\|]*\|[^\|]*\|(?P<value>[^\|]*) 

Des idées?

+0

À quoi sert le «P»? Sans ça, ça me va bien. –

+0

Essayez ce qui suit: '^ [^ \ |] * \ | [^ \ |] * \ | \ K [^ \ |] +' si - par hasard - le moteur de regex n'est pas vraiment un .NET, mais est Onigmo/PCRE/Boost. Cela fonctionnera à regex101 avec l'option PHP, mais ne testez pas là-bas, testez dans l'éditeur. –

Répondre

2

Essayez ceci: (?<=[^\|]+\|[^\|]+\|)(?<value>[^\|]+)

Le positif regarder en arrière (?<=) fera en sorte action et key ne font pas partie du match.

Normalement, vous ne devriez pas utiliser de rétroprojecteur de longueur non fixe, mais cela fonctionne peut-être pour vous.

+0

Cette règle me donne une exception: Une règle de mise en évidence correspondait à 0 caractères, ce qui provoquerait une boucle sans fin. Modifiez la définition de surlignage afin que la règle corresponde à au moins un caractère. Également essayé ici https://regex101.com/ avec une erreur différente: Un quantificateur à l'intérieur d'un lookbehind fait de la largeur non-fixe – Alioooop

+0

regex101 n'a pas C# RegEx. Essayez [Regex Storm] (http://regexstorm.net/tester). Dommage que cela ne fonctionne pas avec textEditor d'Avalon. Pouvez-vous fournir un [mcve]? J'ai remplacé le '*' par '+' peut-être que cela fait déjà l'affaire. –

+0

WOHO, en remplaçant * par + a fait l'affaire! :) Merci! – Alioooop