Овај водич ће показати како се користи Регек у ВБА.
Шта је Регек?
Регек означава регуларни израз. Регуларни израз је образац састављен од низа знакова које можете користити за проналажење одговарајућег обрасца у другом низу. Да бисте користили Регек у ВБА морате користити објекат РегЕкп.
Узорак као што је [А-Ц] може се користити за тражење и подударање великих слова од А до Ц из низа. Регек обрасци имају своју синтаксу и могу се направити помоћу знака или низа знакова.
Подударање знакова
Следећа табела приказује синтаксу која ће вам омогућити да направите Регек обрасце.
Паттерн Синтак | Опис | Пример | Пронађена подударања |
---|---|---|---|
. | Подудара се са било којим знаком осим вбНевЛине | ф.н | фан, фон, ф@н, фвн |
[ликови] | Подудара се са било којим знаком између заграда [] | [фн] | Одговарало би само „ф“ или „н“ у вентилатору |
[^ликови] | Подудара се са било којим знаком који није између заграда [] | [^фн] | Тако би се подударало са „ј“ у „фјн“ |
[почетак-крај] | Одговара сваком знаку који је део опсега у заградама [] | [1-5] | Одговарало би „4“ и „5“ у „45“ |
\ в | Одговара алфанумеричким знаковима и доњој црти, али не и размаку | \ в | Одговарало би „ц“ у „, ц“. |
\ В | Одговара свим алфанумеричким знаковима и доњој црти | \ В | Одговарало би „@“ у „бб@бб“ |
\ с | Подудара се са било којим размаком, као што су размаци и картице | \ с | Одговарало би “” у “Ово је” |
\ С | Подудара се са било којим размаком који није бели | \ С | Одговарало би „Т“ и „х“ у „Т х“ |
\ д | Одговара било којој појединачној децималној цифри | \ д | Одговарало би „7“ у „а7х“ |
\ Д | Подудара се са једном појединачном цифром која није децимална | \ Д | Одговарало би ј у „47ј“ |
\ | Бежи од посебних знакова што вам омогућава да их тражите | \. | Одговарало би „.“ у „59.пК“ |
\ т | Таб | \ т | Одговара ли табулатору |
\ р | Превоз Повратак | \ р | Одговара враћању носача (вбЦр) |
\ н | вбНевЛине (вбТаб) | \ н | Одговарао би новој линији |
Квантификатори
Помоћу квантификатора можете одредити колико пута желите да се узорак подудара са низом.
Квантификатор | Опис | Пример | Пронађена подударања |
---|---|---|---|
* | Подудара се са нулом или више појављивања | фн*а | фна, фа, фнна, фннна, фнфннна |
+ | Подудара се са једним или више појављивања | фн+а | фна, фнна, фнфнна |
? | Подудара се са нулом или јединицом | фн? а | фа, фна |
{н} | Подудара се са „н“ више пута | д \ В {4} | Одговарало би „д…“. у „д…. & 5хи“ |
{н,} | Подудара се најмање „н“ број пута | д \ В {4,} | Одговарало би „д…. &“ У „д…. & 5хи“ |
{н, м} | Подудара се између н и м број пута | д \ В {1,8} | Одговарало би „д…. &&&&“ у „д…. &&&& 5хи“ |
Груписање
Груписање или хватање вам омогућава да користите образац за хватање и издвајање дела низа. Дакле, не само да се образац подудара, већ се хвата и део низа који одговара узорку.
Шаблон | Опис | Пример | Пронађена и снимљена подударања |
---|---|---|---|
(израз) | Групира и снима образац у загради | (\ В {4}) | Да ли би груписао и снимио „@@@@“ са „1 @@@@ 1јлмба“ |
Како се користи Регек у ВБА
Да бисте користили Регек у ВБА, прво морате поставити референцу у ВБЕ уређивачу. У уређивачу ВБЕ идите на Алатке> Референце> Мицрософт ВБСцрипт регуларни изрази.
Ово су својства објекта РегЕкп:
- Шаблон - Узорак који ћете користити за усклађивање са низом.
- ИгнореЦасе - Ако је Тачно, онда се подударање занемарује велика и мала слова.
- Глобално - Ако је Тачно, тада се проналазе сва подударања узорка у низу. Ако је Нетачно, тада се налази само прво подударање.
- МултиЛине - Ако је Тачно, подударање шаблона се дешава преко прелома редова.
Ово су методе објекта РегЕкп:
- Тест - Тражи образац у низу и враћа Труе ако се пронађе подударање.
- Заменити - Замјењује појављивања узорка замјенским низом.
- Извршити - Враћа подударања узорка у низ.
Тестирање узорка за подударање са низом
Помоћу методе Тест можете проверити да ли се узорак подудара са низом у улазном низу. Резултат је Тачан ако се пронађе подударање. Следећи код ће вам показати како тестирати образац у низу:
12345678910111213 | Суб РегекТестингАПаттерн ()Дим стрингОне Ас СтрингДим регекОне Ас ОбјецтПостави регекОне = Нови РегЕкпрегекОне.Паттерн = "ф… .а"стрингОне = "000111фјо88а8"Дебуг.Принт регекОне.Тест (стрингОне)Енд Суб |
Резултат је:
Замена узорка у низу
Помоћу методе Реплаце можете заменити прву инстанцу одговарајућег узорка у низу или све инстанце одговарајућег обрасца у низу. Ако је Глобално постављено на Нетачно, замјењује се само прва инстанца. Следећи код ће вам показати како да замените образац у низу:
1234567891011 | Суб РегекРеплацингАПаттерн ()Дим стрингОне Ас СтрингДим регекОне Ас ОбјецтПостави регекОне = Нови РегЕкпрегекОне.Паттерн = "Ово је број"регекОне.Глобал = НетачнострингОне = "Ово је број 718901"Дебуг.Принт регекОне.Реплаце (стрингОне, "То је нови број")Енд Суб |
Резултат је:
Да бисте заменили само бројчани део низа који је коришћен горе, користили бисте следећи код:
1234567891011 | Суб РегекРеплацингАПаттерн ()Дим стрингОне Ас СтрингДим регекОне Ас ОбјецтПостави регекОне = Нови РегЕкпрегекОне.Паттерн = "[^\ Д]+"регекОне.Глобал = НетачнострингОне = "Ово је број 718901"Дебуг.Принт регекОне.Реплаце (стрингОне, "777192")Енд Суб |
Резултат је:
Да бисте заменили сваку инстанцу одређеног обрасца у низу, поставили бисте глобалну вредност на Труе. Следећи код вам показује како да замените сваку инстанцу -А1289Ц- у низу:
1234567891011 | Суб РегекРеплацингЕвериИнстанцеОфАПаттерн ()Дим стрингОне Ас СтрингДим регекОне Ас ОбјецтПостави регекОне = Нови РегЕкпрегекОне.Паттерн = "\ В \ А \ д+Ц \ В"регекОне.Глобал = ТачнострингОне = "АБЦ-А1289Ц-АБЦ-А1289Ц-АБЦ"Дебуг.Принт регекОне.Реплаце (стрингОне, "ИЈК")Енд Суб |
Усклађивање и приказивање узорка у низу
Можете користити методу Екецуте за подударање једне или свих инстанци узорка унутар низа. Следећи код вам показује како да упоредите и прикажете све инстанце узорка из низа:
123456789101112131415161718 | Суб РегекМатцхингАндДисплаиингАПаттерн ()Дим стрингОне Ас СтрингДим регекОне Ас ОбјецтПостави регекОне = Нови РегЕкпрегекОне.Паттерн = "А.Ц"регекОне.Глобал = ТачнорегекОне.ИгнореЦасе = ИгнореЦасестрингОне = "АБЦ-А1289Ц-АДЦ-А1289Ц-АЈЦ"Подесите Матцхес = регекОне.Екецуте (стрингОне)За сваку утакмицу у утакмицамаДебуг.Принт Матцх.ВалуеСледећиЕнд Суб |
Резултат је:
Рецимо да смо само желели да упаримо -АДЦ- из горњег низа. Следећи код показује како да упарите и прикажете само -АДЦ- из низа:
123456789101112131415161718 | Суб РегекМатцхингАндДисплаиингАПаттерн ()Дим стрингОне Ас СтрингДим регекОне Ас ОбјецтПостави регекОне = Нови РегЕкпрегекОне.Паттерн = "\-\ А.Ц \-"регекОне.Глобал = НетачнорегекОне.ИгнореЦасе = ИгнореЦасестрингОне = "АБЦ-А1289Ц-АДЦ-А1289Ц-АЕЦ"Подесите Матцхес = регекОне.Екецуте (стрингОне)За сваку утакмицу у утакмицамаДебуг.Принт Матцх.ВалуеСледећиЕнд Суб |
Регексу може требати неко време да научи, али то је изузетно моћан алат за идентификовање/манипулисање низовима текста. Такође се широко користи у програмским језицима.