Teoria
- Podstawowym elementem wyrażenia regularnego jest atom tzn.:
. = dopasuj dowolny znak, lub
^ = dopasuj początek linii, lub
$ = dopasuj koniec linii, lub
- znak = dopasuj dokładnie ten znak, lub
[zestaw znaków] = dopasuj którykolwiek z tych znaków:
[abc] = dopasuj a, b, lub c
[a-cx-z] = dopasuj a, b, c, x, y lub z
[^abc] = dopasuj wszystko poza a, b lub c
- jeden z predefiniowanych typów:
[[:digit:]] = dopasuj dowolną cyfrę
[[:alpha:]] = dopasuj dowolną literę (małą lub wielką)
[[:alnum:]] = dopasuj dowolną cyfrę lub literę
[[:lower:]] = dopasuj dowolną małą literę
[[:upper:]] = dopasuj dowolną wielką literę
[[:space:]] = dopasuj dowolny biały znak (w kodzie ASCII jest ich więcej niż tylko spacja, tabulator i nowa linia)
(zestaw atomów) = dopasuj wszystkie atomy zgodnie z regułami jak powyżej
- Po każdym atomie może się pojawić jeden z tych znaków:
* = dopasuj zero lub więcej tego atomu
+ = dopasuj jeden lub więcej
? = dopasuj zero lub jeden
{m} = dopasuj dokładnie m powtórzeń
{m,} = dopasuj co najmniej m powtórzeń
{m,n} = dopasuj co najmniej m powtórzeń, ale nie więcej niż n
- Sekwencja atomów (lub ew. atomów z informacją o powtórzeniach) to część (piece) = dopasuj po kolei atomy od lewej do prawej
- Części mogą być oddzielone znakiem
| oznaczającym rozgałęzienie (branch) = dopasuj jedną z części (albo po lewej stronie | albo po prawej)
Przykłady
a+ = dopasuj dowolnie długi ciąg liter a np.: a, aa, aaa, ...
a?b = dopasuj ab lub b
[A-Z][a-z]+[[:digit:]]+ = dopasuje napis zaczynający się od wielkiej litery, po której nastąpi ciąg małych liter zakończony ciągiem cyfr np. Test2012, Wdi2010, Napis11111111
abc|def = dopasuj albo abc albo def
(abc)+ = dopasuj powtórzenia napisu abc np. dla wejścia abcabcabb dopasuje się pierwsze sześć znaków
([[:alnum:]]|[.-])+@([[:alnum:]]|[.-])+ = dopasuj adres e-mail (dwa człony z liter, cyfr i/lub kropek i myślników oddzielone znakiem @)