Регулярні вирази

2075 / Регулярні вирази

 

Регулярні вирази – це чутливі до регістру маски, що використовуються для пошуку збігу, співпадіння в тексті

 

 

"[Ss]ir", "[Ss].."
"Sir, sir, in my heart.";

"[a-d]", "[abcd]"
"abcdefgABSDIFG";

"[0-9]"
"3 and 55 or 666"

"[0-9].[0-9]" // будь-який символ між цифрами
"3.14 and 2x2"

"^.." // початок рядка
"Hello. \n Goodbe."

"^[^b]" // текст, що не починаються з літери b
"a b c"

@"..\.$" // кінець тексту
"Hello. \n Goodbe."

"[0-9][0-9]", @"\d\d" //цифра
"0 123 45 6 789"

@"\D" // не цифра
"a123Ab56Bk7K"

@"\d\D\d\D"
"1F4D KLMN 2D5K 1234 2 5 "

@".o\s" // пробіл, нерозривний пробіл, табуляція
"Go and go ."

@"\S" // не пробіл
"1 4 6 8"

@"\w\w\w\w" // буква або цифра
"melon or apple 12345"

@"\W" // пробіл чи спецсимвол
"2@ or$ 3'"

@"\b\w\w\w\b", "\b\w{3}\b" // \b - межа слова
"cat or dog"

@"\b\w{3,5}\b"
"cat or dog and good aaaaa cheecken"

@"ts*" // повторюєтья 0 і більше раз
"t ts kss ksss tssss tststt kt"

@"ts+" // повторюєтья 1 і більше раз
"t ts kss ksss tssss tststt kt"

@"a\+" // знайти a+
"a+b=c"

@"ba?" // повторюєтья 0 чи 1 раз
"ba b baa baaa"

@"\b\w{3}\b|\b\w{5}\b" // 3 чи 5 букв або цифр
"ba b 123 baaab"
 

 


 

Спеціальні символи [ ] \ ^ $ .| ? * + ( ) { } – можна екранувати символом \
Можна екранувати деяку послідовність символів, розмістивши її між \Q і \E

 

a\.? a. або a
a\\\\b a\\b
a\[F\] a[F]
\Q+-*/\E +-*/

 

. – будь-який символ
* – значить 0 чи більше випадків (ab*c – після a буде 0, чи 1, чи багато літер b)
(.*?) – багато символів

 

Символьні класи

[абв] – один з трьох зазначених символів
Для включення усіх символів українського алфавіту можна використовувати [Є-ЯҐ], [а-їґ]
^ – символи, що не входять у набір

 

Метасимволи

\d цифра [0-9]
\D нецифровий символ [^0-9]
\s будь-який пробільний символ [ \f\n\r\t\v]
\S будь-який непробільний символ [^ \f\n\r\t\v]
\w будь-який літерний символ,
цифровий чи знак підкреслення
[[:word:]]
\W будь-який символ, крім літерного символу,
цифрового або підкреслення
[^[:word:]]

 

Позиція всередині рядка

^ початок рядка ^h -> hello world
$ кінець рядка d$ -> hello world
\b межа слова o\b -> hello world, d\b -> hello world, \bw -> hello world
\B не межа слова \Bl\B -> hello world
\G попередній
успішний пошук
\Ga -> aaa aaa

 

Пошук послідовностей

{n} рівно n разів colou{3}r -> colouuur
{m,n} від m до n включно colou{2,4}r -> colouur, colouuur, colouuuur
{m,} не менше m colou{2,}r -> colouur, colouuurм, colouuuur, …
{,n} не більше n colou{,3}r -> color, colour, colouur, colouuur

 

* нуль або більше {0,}
+ одне або більше {1,}
? нуль або одне {0,1}