Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt. Регулярное выражение в QSyntaxHighlighter. [RSS Feed]

#1 Фев. 1, 2018 11:00:00

KriO
Зарегистрирован: 2012-10-07
Сообщения: 61
Репутация: +  9  -
Профиль   Отправить e-mail  

PyQt. Регулярное выражение в QSyntaxHighlighter.

Здравствуйте. Подскажите, пожалуйста, как задать регулярное выражение для ключевых слов в QTextEdit? Поясняю: есть редактор программ на определённом языке программирования. В нем есть ключевые слова, например “begin”, “end”. Пользователь хочет, чтобы ключевые слова подсвечивались определённым цветом. Я использую QSyntaxHighlighter. Ключевые слова подсвечиваются, но необходимо задать регулярное выражение таким образом, чтобы они не подсвечивались в строках, т. е. в последовательности символов, заключённых в апострофы (') и в однострочных комментариях, они начинаются с символа восклицательный знак (!). В строках у меня получилось сделать, но в случае, когда идут две строки, а между ними ключевое слово, то это ключевое слово тоже воспринимается, как будто оно в строке, например: ‘ begin ’ end ‘begin’ (дурацкий пример, но суть передаёт). Спасибо.

Офлайн

#2 Фев. 1, 2018 12:00:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

PyQt. Регулярное выражение в QSyntaxHighlighter.

Надо брать текст, пропускать его через конечный автомат и потом возвращать обратно уже размеченным. Регулярные выражения для более-менее структурированных анализов не подходят.

KriO
таким образом, чтобы они не подсвечивались в строках, т. е. в последовательности символов, заключённых в апострофы (') и в однострочных комментариях, они начинаются с символа восклицательный знак (!).
А если комментарий будет частью строки?
"abc !def ghi" begin
Тут комментарий - уже не комментарий, но при обработке тупым регулярным выражением оно увидит этот “комментарий” и заберёт всё до конца строки, включая ключевое слово begin, которое надо подсветить.



Отредактировано py.user.next (Фев. 1, 2018 12:02:01)

Офлайн

#3 Фев. 1, 2018 14:52:16

KriO
Зарегистрирован: 2012-10-07
Сообщения: 61
Репутация: +  9  -
Профиль   Отправить e-mail  

PyQt. Регулярное выражение в QSyntaxHighlighter.

Спасибо. Жаль, что нет простого решения.

Отредактировано KriO (Фев. 1, 2018 14:52:30)

Офлайн

#4 Фев. 1, 2018 16:17:07

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

PyQt. Регулярное выражение в QSyntaxHighlighter.

> Спасибо. Жаль, что нет простого решения.

Есть такое решение. http://pygments.org/



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

  • Начало
  • » GUI
  • » PyQt. Регулярное выражение в QSyntaxHighlighter.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version