Я использую AvalonEdit в приложении, которое работает на моем собственном языке. Я определил файл highlighting.xml, который отлично работает.
Теперь я пытаюсь расширить его в соответствии с:
следующее слово после слова «метод» окрашено в синий цвет.
Я придумал это регулярное выражение, чтобы сделать это:
(?s)(?<=method )(.+?)(?= )
И протестировал его с помощью этого ввода:
via method AMethod on interface
Что прекрасно работает с http://regexstorm.net/tester.
Затем я попробовал следующие правила, но ни одно из них не сработало. С ними больше ничего не выделяется.
<Rule foreground="DarkBlue">
\(?s)(?<=method )(.+?)(?= )
</Rule>
<Rule foreground="DarkBlue">
\(?s)(?<=method )(.+?)(?= )
</Rule>
<Rule foreground="DarkBlue">
(?s)(?<=method )(.+?)(?= )
</Rule>
Этот не нарушал подсветку, но и не работал:
<Rule foreground="DarkBlue">
(?s)(?<=method )(.+?)(?= )
</Rule>
Возможно ли то, что я пытаюсь сделать? Правильно ли регулярное выражение? Я совершенно не разбираюсь в регулярных выражениях.
Заранее спасибо.
Обновление для ответа Дивисадеро
Эти ломают Подсветку.
<Rule foreground="DarkBlue">
\(?s)(?<=method )([^' ']+)
</Rule>
<Rule foreground="DarkBlue">
\(?s)(?<=method )([^' ']+)
</Rule>
<Rule foreground="DarkBlue">
(?s)(?<=method )([^' ']+)
</Rule>
Эти не ломают Подсветку, но не работают:"
<Rule foreground="DarkBlue">
(?s)(?<=method )([^' ']+)
</Rule>
via
,method
,on
иinterface
в вашем языке как ключевые слова? То есть все они входят в правило<Keywords>
? Есть ли у вас правило для определяемых пользователем имен в целом с регулярным выражением, таким как\b\w+\b
или\b[A-Z]\w*\b
? - person Alan Moore   schedule 09.03.2016