Есть такая задача:
Пропарсить все тексты модулей и найти места, где текст в кавычках не обернут в нужную мне функцию. Допустим это функция Я(). Не та, которая в классах, а от слова Язык().
Первое, если я правильно мыслю, делается с помощью ПолучитьТекстМодуля объекта Информатор. Т.е. делаю перебор всех объектов метаданных, создаю объект в цикле и передаю в ПолучитьТекстМодуля. Или другой вариант - разложить МД gcomp-ом и парсить файлы.
А второе решается с помощью регулярного выражения. Но пока у меня есть загвоздка.
Есть регулярное выражение:
"([^"\n]|"".)*?" оно отлавливает (на JavaScript) весь текст в кавычках, включая экранирование кавычек, т.е. двойные "" внутри текста.
Например, в такой строке:
Если (СловоПоНомеру(Стр,1)="Функция ""+"" ")или(СловоПоНомеру(Стр,1)="Процедура")
Но вот если добавить условие получения двух символов в начале (по моим соображениям, всё, что не Я (или я), т.е. так:
[^яЯ]{2}"([^"\n]|"".)*?" то регулярка начинает не правильно работать. И выделяет так:
Если (СловоПоНомеру(Стр,1)="Функция ""+"" ")или(СловоПоНомеру(Стр,1)="Процедура")
Т.е. потеряла в первом выделении пару символов.
Будут у кого-то соображения на этот счёт?
Кстати, проверять регулярные выражения удобно здесь:
http://iblogbox.com/devtools/regexp/