Справка по выражению VBScript Regex в Excel VBA - PullRequest
0 голосов
/ 26 января 2011

Мне нужно внести некоторые глобальные изменения в ряд электронных таблиц, и я думаю, что лучший способ - это использовать регулярные выражения, поэтому я добавил ссылку на библиотеку типов регулярных выражений Microsoft VBScript и теперь могу обрабатывать регулярные выражения. Я использую функцию со следующей подписью:

RegExpSubstitute ( target as string, searchREGEX as string, replaceREGEX as string) as string

У меня есть несколько ячеек с таким содержимым:

'ALBERTS1:XLRI_CHEM_CHEMICAL_1' * 'Albert_Chemicals_SG_Lime' * 'Albert_Chemicals_Conc_Lime' * 'Albert_Lime_price' / 1000

Все элементы, начинающиеся с "Albert_", должны быть заменены на "'ALBERTS1-", а все остальные подчеркивания в этом символе должны быть заменены на тире. Первая часть, которую я могу сделать с:

new = RegExpSubstitute(old, "(')([^-:_ ]+)(_)([^']*)(')", "$1" & scadaPrefix & "-$4$5")

но это только заменяет первый '_' на '-', и мне нужно сделать все остальные в этом символе. Первый символ, начинающийся с «ALBERTS1:» не должен быть изменен.

В настоящий момент я думаю, что лучше всего разбить строку на символы на символе пробела, а затем обработать каждый символ отдельно, но могу ли я сделать все это за один поиск и заменить?

1 Ответ

1 голос
/ 26 января 2011

Извините, нет, вы можете сделать это только с помощью механизма регулярных выражений, который поддерживает просмотр бесконечной длины, а механизмы ECMAScript этого не делают.если он начинается с Albert_, тогда выполните замены на нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...