Форум сайта python.su
Здравствуйте. Подскажите, пожалуйста, как задать регулярное выражение для ключевых слов в QTextEdit? Поясняю: есть редактор программ на определённом языке программирования. В нем есть ключевые слова, например “begin”, “end”. Пользователь хочет, чтобы ключевые слова подсвечивались определённым цветом. Я использую QSyntaxHighlighter. Ключевые слова подсвечиваются, но необходимо задать регулярное выражение таким образом, чтобы они не подсвечивались в строках, т. е. в последовательности символов, заключённых в апострофы (') и в однострочных комментариях, они начинаются с символа восклицательный знак (!). В строках у меня получилось сделать, но в случае, когда идут две строки, а между ними ключевое слово, то это ключевое слово тоже воспринимается, как будто оно в строке, например: ‘ begin ’ end ‘begin’ (дурацкий пример, но суть передаёт). Спасибо.
Офлайн
Надо брать текст, пропускать его через конечный автомат и потом возвращать обратно уже размеченным. Регулярные выражения для более-менее структурированных анализов не подходят.
KriOА если комментарий будет частью строки?
таким образом, чтобы они не подсвечивались в строках, т. е. в последовательности символов, заключённых в апострофы (') и в однострочных комментариях, они начинаются с символа восклицательный знак (!).
"abc !def ghi" begin
Отредактировано py.user.next (Фев. 1, 2018 12:02:01)
Офлайн
Спасибо. Жаль, что нет простого решения.
Отредактировано KriO (Фев. 1, 2018 14:52:30)
Офлайн
> Спасибо. Жаль, что нет простого решения.
Есть такое решение. http://pygments.org/
Офлайн