Работа с регулярни изрази в Delphi, Sagittarius Coder

Механизмът за обработка на регулярни изрази се намира в модула System.RegularExpressions и се състои от един клас и два записа (с изключение на сервизните компоненти).

  • TRegEx – (клас) самото обработване на регулярен израз;
  • TMatch – (запис) представяне на един резултат от обработката;
  • TMatchCollection – (запис) събиране на резултати от обработка (TMatch). Използва се, ако се предполага, че текстът може да съдържа няколко фрагмента, съответстващи на дадения регулярен израз.

Създаване на обект за обработка на регулярен израз

За да създадете екземпляр на класа TRegEx, който ще работи с него, трябва да предадете този израз като параметър на конструктора.

Важно е да се отбележи, че регулярният израз, с който ще работи този обект, не може да бъде променен по-късно. За да работите с различен регулярен израз, ще трябва да създадете друг обект.

След като обектът за обработка на регулярния израз е създаден, можете да преминете към решаване на приложни задачи. Например намиране на съвпадения или замяна на текстови фрагменти.

Намерете съвпадения

Намирането на едно съвпадение е доста лесно.

Това изисква предаване на анализирания низ като параметър към метода Match и той ще върне стойност от тип TMatch, ако има съвпадение. В този случай намереният текст ще бъде достъпен чрез полето Value TMatch.

Ако в текста може да има няколко съвпадения, тогава методът на изпълнение зависи от конкретната задача.

Ако просто искате да намерите най-първото (от началото на низа) съвпадение, можете също да използвате съвпадението. Ще работи правилно, дори акомножество съвпадения, но ще върне само първото от тях. В противен случай трябва да използвате метода Matches и да работите с TMatchCollection,

Извикването на метода Matches е подобно на метода Match.

Всяко намерено съвпадение ще бъде достъпно като елемент от (TMatch) TMatchCollection.

В допълнение към описаните по-горе задачи, когато търсите кореспонденции, може дори да не е необходимо да търсите конкретни резултати, а само да потвърдите тяхното присъствие.

За да направите това, използвайте метода IsMatch на класа TRegEx. Ако има поне едно съвпадение на регулярен израз в анализирания низ, този метод ще върне true. Както в предишните случаи, анализираният низ се предава като параметър.

Замяна на текстови фрагменти с регулярен израз

За да замените фрагменти от текст с помощта на регулярен израз, използвайте метода Replase на класа TRegEx. Необходими са два аргумента на низ: низът, който трябва да бъде анализиран, и низът, с който да се заменят всички съвпадения на дадения регулярен израз.

Разделяне на низове по регулярен израз

Класът TRegEx поддържа разделяне на низ с помощта на регулярен израз за намиране на точки на разделяне.

Разделянето се извършва с помощта на метода Split, който има няколко претоварвания. Най-простият от тях приема само анализирания низ като параметър. Този метод връща масив от разделени низове във формат TArray.

Този метод обаче има една особеност. Не винаги обработва правилно интервали и контролни знаци. Следователно, преди по-нататъшно използване на получените низове, може да се наложи да премахнете допълнителни знаци с помощта на функцията Trim.

Следното е пример за разделяне на низове чрез регулярен израз сс помощта на функцията Trim.