Frank Coelho de Alcantara -2020
Álgebra criada por Stephen Kleene em 1956, enquanto estuda linguagens para uso em sistemas de inteligência artificial.
O conceito de computação como temos hoje ainda estava se solidificando.
Se $L_1$ e $L_2$ são linguagens, então $L_1 \cup L_2$ é o conjunto de todas as strings que estão em $L_1$ ou $L_2$, ou em ambas.
Se $L_1=\{bonito\}$ e $L_2=\{muito\}$ então $$L_1 \cup L_2 = \{bonito, muito\}$$
Se $L_1=\{0, 00\}$ e $L_2=\{1, 11\}$ então $$L_1 \cup L_2 = \{0, 00, 1, 11\}$$
Se $L_1$ e $L_2$ são linguagens, então $L_1 \cdot L_2$ a concatenação $L_1L_2$ é o conjunto de todas as strings na forma $xy$ tal que $x \in L_1$ e $y \in L_2$
Se $L_1=\{bom\}$ e $L_2=\{dia\}$ então $$L_1L_2 = \{bomdia\}$$
Se $L_1=\{0, 00\}$ e $L_2=\{1, 11\}$ então $$L_1L_2 = \{01, 011, 001, 0011\}$$
Se $L$ é uma linguagem, então: $$L^* = \varepsilon \cup L \cup LL \cup LLL \cup LLLL...$$
Note que:
$\varepsilon$ é uma expressão regular que identifica o string vazio.
Um símbolo qualquer como $a$ é uma expressão regular que identifica a string "a".
Se $r$ e $s$ são expressões regulares então $r\cup s = r+s = r|s$ é uma expressão regular.
Se $r$ e $s$ são expressões regulares então $r\cdot s = rs$ é uma expressão regular.
Se $r$ é uma expressão regular então $r^*$ é uma expressão regular.
Se $r$ é uma expressão regular então $(r)$ é uma expressão regular.
O símbolo Q, por si só, é uma expressão regular que identifica strings "Q".
Casa | Cachorro é uma expressão regular que identifica o string "Casa" ou o string "Cachorro".
Se Para e Médico são expressões regulares então ParaMédico é uma expressão regular que identifica a string "ParaMédico".
Se $a$ é uma expressão regular então $a^*$ é uma expressão regular que identifica qualquer uma das seguintes strings $a, aa, aaa, aaaa...$.
As operações união, concatenação e Kleene Star são associativas a esquerda: $$a|b|c = ((a|b)|c)$$
Por exemplo: $a|b^* c \equiv a|(b^*)c$ ou: $$ \{a\} \cup ((\{b\}^*)(\{c\}) = \{a, c, bc, bbc, bbbc...\}$
a Expressão regular $ab^*$ quando aplicada a string $\{aabb\}$ irá identificar $\{a, ab, abb\}$
Regex | Identifica |
---|---|
$abc$ | $\{abc\}$ |
$ab^*c$ | $\{ac, abc, abbc, abbbc...\}$ |
$c(a|b|c)^*c$ | O conjunto de todas as strings de a's, b's e c's de comprimento maior ou igual a 2 começando e terminando com c. |
$b^*(ab*ab*)*$ | o conjunto de todas as strings de a's e b's com un número par de a's. $\{\varepsilon, aa, aab, aba, baa, aaaa, aabb, abab, abba...\}$ |
metacaractere | conhecido como | significado |
---|---|---|
. | curinga | qualquer caractere, exceto a quebra de linha \n |
[...] | conjunto | qualquer caractere incluído no conjunto |
[^...] | conjunto negado | qualquer caractere não incluído no conjunto |
\d | dígito | o mesmo que [0-9] |
\D | não-digíto | o mesmo que [^0-9] |
\s | branco | espaço, quebra de linha, tabs etc.; o mesmo que [ \t\n\r\f\v] |
\S | não-branco | o mesmo que [^ \t\n\r\f\v] |
\w | alfanumérico | o mesmo que [a-zA-Z0-9_] (mas pode incluir caracteres Unicode; ver flag_unicode) |
\W | não-alfanumérico | o complemento de \w |
\ | escape | anula o significado especial do metacaractere seguinte; por exemplo, \. representa apenas um ponto, e não o curinga |
metacaractere | significado |
---|---|
{n} | exatamente n ocorrências |
{n,m} | no mínimo n ocorrências e no máximo m |
{n,} | no mínimo n ocorrências |
{,n} | no máximo n ocorrências |
? | 0 ou 1 ocorrência; o mesmo que {,1} |
+ | 1 ou mais ocorrência; o mesmo que {1,} |
* | 0 ou mais ocorrência |
^ | início do texto, ou de uma linha com o flag re.MULTILINE |
\A | início do texto |
$ | fim do texto, ou de uma linha com o flag re.MULTILINE; não captura o \n no fim do texto ou da linha |
\Z | fim do texto |
\b | posição de borda, logo antes do início de uma palavra, ou logo depois do seu término; o mesmo que a posição entre \W e \w ou vice-versa |
\B | posição de não-borda |
Usando o site www.regex101.com
Identificar um número de telefone da forma como a pessoa escrever incluíndo os dados internacionais de ddi e ddd.
Identificar um CEP, segundo o padrão brasileiro, da forma como a pessoa escrever, incluíndo espaços, pontos e hífens.
Identificar um CPF, segundo o padrão brasileiro, da forma como a pessoa escrever, incluíndo espaços, pontos e hífens.
Resolva o exercício participativo clicando aqui.
Você pode baixar o material de apoio clicando aqui