ВБА - Регуларни изрази

ВБА - Регуларни изрази

Циљ овог упутства је да објасни све замршености које се односе на употребу регуларних израза. Научићете како да се крећете кроз низове да бисте пронашли поднизове помоћу регуларних израза (обично названих РегЕкп ).

Предувјети

У ВБА Едитор-у.
  • Идите у мени Алатке> Референце.
  • Прегледајте разне референце и проверите следећу опцију "Мицрософт ВБСцрипт Регулар Екпрессион 5.5".

Синтакса и декларација

У овим примерима, једини услови које захтевамо су:

Изјава

Доступне су две опције:

Ас Објецт

 Дим рег Ас Објецт Сет рег = ЦреатеОбјецт ("вбсцрипт.регекп") 

ВБСцрипт_РегЕкп_55.регекп

 Дим рег Ас ВБСцрипт_РегЕкп_55.регекп Постави рег = Нови ВБСцрипт_РегЕкп_55.регекп 

Тхе пропертиес

Без обзира на то како сте навели РегЕкп, својства ће имати исту синтаксу.

Образац

Узорак мора бити у складу са поднизом. Омогућава вам да се крећете кроз стринг.

 рег.Паттерн = "ИциЛеМотиф" 

Тест

Тестираћемо стринг, ако је шаблон пронађен, враћа следећу логичку вредност: Труе.

 рег.Тест = "ИциЛеМотиф" 

Низ почиње са А (велико)

Образац би био:
  • на почетку низа
  • постоји А

Ознака овог обрасца је: ^ А

 Функција Прем_Леттре_А (израз Ас Стринг) Ас Боолеан Дим рег Ас Објецт Сет рег = ЦреатеОбјецт ("вбсцрипт.регекп") 'Ле Паттерн ис ле мотиф куе л'он рецхерцхе' дебут де цхаине: ^ 'доит етре: А рег.Паттерн = "^ А" 'тестира ренвоие ун Боолеан (парфаит поур нотре фонцтион Боолеенне !!!) Прем_Леттре_А = рег.тест (израз) Енд Фунцтион 

Да бисте позвали функцију:

 Суб Тест_А () 'Ноус аллонс цхерцхер си ун Стринг покреће пар "А" Мајусцуле МсгБок Прем_Леттре_А ("алорс?") МсгБок Прем_Леттре_А ("Аххх") МсгБок Прем_Леттре_А ("Пас мал нон?") Енд Суб 

Низ почиње са а или А

Ознака обрасца је [аА]

 Суб Тест_а_оу_А () 'Ноус аллонс цхерцхер си ун Стринг покреће пар "а" или "А" МсгБок Прем_Леттре_а_оу_А ("алорс?") МсгБок Прем_Леттре_а_оу_А ("Аххх") МсгБок Прем_Леттре_а_оу_А ("Пас мал нон?") израз Ас Стринг) Као Боолеан Дим рег Ас Објецт Сет рег = ЦреатеОбјецт ("вбсцрипт.регекп") 'ици ла премиере леттре: ^' доит етре: а оу А => [аА] рег.Паттерн = "^ [аА]" Прем_Леттре_а_оу_А = рег.тест (израз) Крај функције 

Низ почиње с великим словом

Ознака за овај образац је: [АЗ]

 Суб Цомменце_пар_Мајусцуле () МсгБок "алорс? Цомменце пар уне мајусцуле:" & Прем_Леттре_Мајусцуле ("алорс?") МсгБок "Аххх цомменце пар уне мајусцуле:" & Прем_Леттре_Мајусцуле ("Ахх") & Прем_Леттре_Мајусцуле ("Пас мал нон?") Крај Подфункција Прем_Леттре_Мајусцуле (израз Ас Стринг) Као Боолеан Дим рег као Објецт Сет рег = ЦреатеОбјецт ("вбсцрипт.регекп") 'ици ла премиере леттре: ^' доит етре уне леттре [АЗ] рег.Паттерн = "^ [АЗ]" Прем_Леттре_Мајусцуле = рег.тест (израз) Крај функције 

Низ се завршава са

Користите следећу нотацију: $

 Суб Фини_Пар () МсгБок "Ла фраза: Лес РегЕкп ц'ест супер! Се термине пар супер:" & Фин_Де_Пхрасе ("Лес РегЕкп ц'ест супер!") МсгБок "Фраза: Ц'ест супер лес РегЕкп! Се термине пар супер: "& Фин_Де_Пхрасе (" Ц'ест супер лес РегЕкп! ") Крај Под функција Фин_Де_Пхрасе (израз Ас Стринг) Ас Боолеан Дим рег Ас Објецт Сет рег = ЦреатеОбјецт (" вбсцрипт.регекп ") 'Ла фин де ла цхаине доит етре : супер! 'нотатион де фин де цхаине: $ рег.Паттерн = "супер! $"' напомена ле $ се место на фин ... Фин_Де_Пхрасе = рег.тест (израз) Енд Фунцтион 

Низ садржи број

Ознака за овај образац је [0-9] . Ако желите пронаћи број између 3 и 7: [3-7]

 Суб Цонтиент_ун_цхиффре () МсгБок "азе1рти цонтиент ун цхиффре:" & А_Ун_Цхиффре ("азе1рти") МсгБок "азерти цонтиент ун цхиффре:" & А_Ун_Цхиффре ("азерти") рег = ЦреатеОбјецт ("вбсцрипт.регекп") 'съдържа съобсениата от 0 до 9 нампорта (дебут, милиеу, фин де цхаине ...) рег.Паттерн = "[0-9]"' ремаркуе [0 Д 'рег.Паттерн = "д" А_Ун_Цхиффре = рег.тест (израз) Крај функције 

Низ садржи трознаменкасти број

Сада ћемо "квантификовати" у нашем РегЕкп-у. Да бисмо пронашли три појаве, користићемо витичасте заграде {}.

 Суб Цонтиент_Ун_Номбре_А_троис_Цхиффрес () МсгБок "азе1рти цонтиент 3 цхиффрес:" & Нб_А_Троис_Цхиффре ( "азе1рти") МсгБок "а1зе2рти3 цонтиент 3 цхиффрес:" и Нб_А_Троис_Цхиффре ( "а1зе2рти3") МсгБок "азер123ти цонтиент 3 цхиффрес:" & Нб_А_Троис_Цхиффре ( "азер123ти") Крај Под функција Нб_А_Троис_Цхиффре (израз Ас Стринг) Ас Боолеан Дим рег Ас Објецт Сет рег = ЦреатеОбјецт ("вбсцрипт.регекп") 'доит цомпортер 3 цхиффрес де 0 а 9 куи се суивент' ле номбре д'оццурренце се ноте {} рег.Паттерн д {3} "'екуивалант де: рег.Паттерн =" [0-9] {3} "Нб_А_Троис_Цхиффре = рег.тест (израз) Енд Фунцтион 

Низ садржи 3 одвојена броја

Код

 Суб Цонтиент_троис_Цхиффрес () МсгБок "азе1рти цонтиент 3 цхиффрес сепарес:" & Троис_Цхиффре ("азе1рти") МсгБок "а1зе2рти3 цонтиент 3 цхиффрес сепарес:" & Троис_Цхиффре ("а1зе2рти3") МсгБок "азер123ти цонтиент 3 цхиффрес сепарес:" ") Енд Суб Фунцтион Троис_Цхиффре (израз Ас Стринг) Ас Боолеан Дим рег Ас Објецт Сет рег = ЦреатеОбјецт (" вбсцрипт.регекп ") 'доит цомпортер 3 цхиффрес де 0 а 9 куи не суивент пас' ле номбре д'оццурренце се ноте {} 'ле поинт (.) индикуе н'импорте куел царацтере сауф ле саут де лигне' ле + индикуе куе це куи ле прецеде (ици ле поинт) доит етре репресенте уне оу уне инфините де фоис рег.Паттерн = "(.) + (д {1}) (.) + (д {1}) (.) + (д {1}) "Троис_Цхиффре = рег.тест (израз) Крај функције 

А вариант

 Суб Цонтиент_троис_Цхиффрес_Варианте () МсгБок "азе1рти цонтиент 3 цхиффрес Сепарес:" & Троис_Цхиффре_Симплифиее ( "азе1рти") МсгБок "а1зе2рти3 цонтиент 3 цхиффрес Сепарес:" & Троис_Цхиффре_Симплифиее ( "а1зе2рти3") МсгБок "азер123ти цонтиент 3 цхиффрес Сепарес:" & Троис_Цхиффре_Симплифиее ( "азер123ти ") Енд Суб Фунцтион Троис_Цхиффре_Симплифиее (израз Ас Стринг) Ас Боолеан Дим рег Ас Објецт Сет рег = ЦреатеОбјецт (" вбсцрипт.регекп ") 'Цомме ле меме мотиф: (.) ​​+ (({1}) се репете троис фоис: рег.Паттерн = "(. + \ т {1}) {3}" Троис_Цхиффре_Симплифиее = рег.тест (израз) Крај функције 

Пример употребе

У нашем примеру, циљ је да се утврди да ли је низ састављен од следећег низа:
  • 1: Низ почиње са речју "Вис"
  • 2: праћено размаком
  • 3: праћено с 1 до 3 слова
  • 4: праћено размаком
  • 5: праћено словом М
  • 6: следи 1 до 2 слова
  • 7: слиједи цртица
  • 8: праћено с 1 до 3 слова
  • 9: следи реч "цлассе" окружена размацима И малим словима
  • 10: праћење 1-2 слова
  • 11: праћено тачком
  • 12: праћено словом

Имајте на уму да : Сваки блок обрасца се налази у заградама.

Нотација:

  • 1- => (^ Вис)
  • 2- => ()
  • 3- => ([а-зА-З] {1, 3})
  • 4- => () --- Напомена: на аураит пу л'инсерер авец ле М куи суит ... Мис поур л'екемпле
  • 5- => (М)
  • 6- => ([а-зА-З] {1, 2})
  • 7- => (-)
  • 8- => ([а-зА-З] {1, 3})
  • 9- => (класа)
  • 10- => ([а-зА-З] {1, 2})
  • 11- => (\ т
  • 12- => ([а-зА-З] {1})

Ово нам даје следећи образац

"(^ Вис) () ([а-зА-З] {1, 3}) () (М) ([а-зА-З] {1, 2}) (-) ([а-зА-З] ] {1, 3}) (цлассе) ([а-зА-З] {1, 2}) (.) ([А-зА-З] {1})

Код:

 Суб Маин () Ако је ВерифиеМаЦхаине ("Вис кк Мкк-к цлассе кк.к") Онда МсгБок "добар" Елсе МсгБок "пас глоп" Крај Ако 'манкуе л'еспаце авант ле М: Ако ВерифиеМаЦхаине ("Вис ккМкк-к цлассе кк.к ") Затим МсгБок" добар "Елсе МсгБок" пас глоп "Крај Ако се заврши Под функционалност ВерифиеМаЦхаине (израз Ас Стринг) Као Боолеан Дим рег као Објецт Сет рег = ЦреатеОбјецт (" вбсцрипт.регекп ") 'Постоје једноставнији пример, али ова је најкомплетнија рег.Паттерн = "(^ Вис) () ([а-зА-З] {1, 3}) () (М) ([а-зА-З] {1, 2} ) (-) ([а-зА-З] {1, 3}) (цлассе) ([а-зА-З] {1, 2}) (.) ([а-зА-З] {1}) "ВерифиеМаЦхаине = рег.тест (израз) Крај функције Енд Суб 

Преузимање

Кодови описани у овом упутству су наведени у овој радној свесци: //цјоинт.цом/14ау/ДХгокИ7ввИв.хтм
Претходни Чланак Sledeći Чланак

Топ Савети