Как настроить регулярные выражения?

Antrax - Консультация по работе системы

Как настроить регулярные выражения? 

1. Разбор строки ответа проверки баланса при помощи регулярного выражения. В этом случае, нужно со строки получить выражение '2.00'

Полное сообщение:

Na Vashem schete 2.00 grn. Tarif 'Vodafone Light'. Nomer deystvitelen do 07.01.2019. Upravlyaite nomerom v My Vodafone App - www.vodafone.ua

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

Для этого необходимо выбрать слово или словосочетание перед значением или после, так же можно указать оба, что бы было более точное регулярное выражение, которое необходимо сравнить, перед ним указать ".*", учитывая "пробелы" перед значением что необходимо проверить, после необходимо указать числовое значение, для этого используем \d, для того что бы взять несколько чисел необходимо после указать \d+, если в значении есть "." или ",", то необходимо их экранировать при помощи символа "\", то есть получится вот так "\." или "\,", далее указываем значения которые идут после, это могут быть символы, которые можно взять при помощи ".*" или же числа, которые можно взять при помощи "\d+", но после символов "." или "," желательно указывать точное значение чисел, для этого можно использовать "\d" с дополнительными значениями "{}"- данная настройка отвечает за количество символов которые необходимо взять для регулярного выражение, соответственно для того что с числа 2.00 указать что после "." идет 2 числа необходимо в скобках "{}" указать 2, то есть \d{2}. Так же если необходимо делать сравнение то значение которое необходимо сравнить нужно брать в скобки "()", данные регулярные выражения будут выглядеть так (\d+) и (\d{2}). Так же иногда бывает что в сообщении есть перенос строки который тоже необходимо указывать при помощи "(?s)". И тогда наше регулярное выражение для сравнения 2.00 будет выглядеть вот так:

.*Na Vashem schete (\d+)\.(\d{2}) grn.*(?s).*

Рассмотрим данное регулярное выражение:

Значение ".*" - отвечает за выбор всех символов в данной строке

"Na Vashem schete " - словосочетание, которое находится перед значением 2.00, то есть мы сделали привязку к значению 2.00, указав слово перед ним
(\d+) - регулярное выражение для значения 2 с числа 2.00
\. - регулярное выражение для значения . с числа 2.00
(\d{2}) -регулярное выражение для значения 00 с числа 2.00

" grn" - словосочетание, которое находится после значением 2.00, то есть мы сделали привязку к значению 2.00, указав слово после его

.*(?s).* - регулярное выражение. которое отвечает за возможный перенос строки, необходим для того что если сообщение будет с переносом строки

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

2.  Разбор строки ответа  проверки баланса при получении иврита. 

Полное сообщение:

ستاسو فعلی حساب0.00 افغانی اوتر07/07/2018 اعتبارلری 

Регулярное выражение:

.*(\d+)\.(\d{2})*(?s).*

3. Разбор строки для авто замены sms, если нужно заменить одно выражение. В этом примере нужно заменить 'код подтверждения:'

Для того что бы заменить текст в SMS необходимо, так же выделить все сообщение и после разбить его на части, те которые не нужно менять, их можно указать как ".*" и те которые необходимо заменить, для этого необходимо указать слово или словосочетание

Полное сообщение:

Введите ваш личный код подтверждения: 558877

Регулярное выражение:

(.*)(код подтверждения)(.*)

Где:

регулярное выражение (.*) отвечает за словосочетание "Введите ваш личный " - первая часть сообщения

(код подтверждения) - регулярное выражение, которое отвечает за точную фразу "код подтверждения"
(.*) - регулярное выражение, которое отвечает за словосочетание ": 558877"

То есть мы разделили текст сообщения на 3 части:

1 часть до слов "код подтверждения"

2 часть слова "код подтверждения"

3 часть после слов "код подтверждения"

Каждая часть выражение выступает как $"часть" - где "часть" это порядковый номер пары "()", то есть первая открытая "(" (скобка), будет как $1, следующая "(" (скобка) как $2

В поле Replace by нужно указать:

$1$3

Результат замены:

Введите ваш личный: 558877

4. Разбор строки для авто замены sms, если нужно заменить несколько выражений. В этом случае нужно заменить G-, google, code.

Полное сообщение:

G-679425 is your google verification code

Регулярное выражение:

(G\-)(.*)(google)(.*)(code)

В поле Replace by нужно указать:

$2$4КoДe

Результат замены:

679425 is your verification КoДe

где, 

.* -соответствует любому символу (кроме терминаторов строк);
(\d) - совпадение с цифрой (равной [0-9]);
(\d+) - совпадение с любым количеством цифр;
(\d{2}) - соответствует точно 2 раза;
\. - экранирование символа; 
(?s) - перенос строки.



 


Loading...