regexp

Aplica uma expressão regular a um texto e retorna posições, trechos casados, tokens ou nomes.

Categoria: Language Fundamentals > Data Types

Sintaxe

[start, finish] = regexp(str, expr)

Índices de início e fim de cada ocorrência.

out = regexp(str, expr, outkey)

Retorna a parte selecionada por outkey: 'match', 'tokens', 'names', 'split', 'start', 'end', 'tokenExtents'.

[a, b, ...] = regexp(str, expr, key1, key2, ...)

Várias saídas na ordem pedida.

___ = regexp(___, 'once')

Para após a primeira ocorrência e a retorna sem o cell externo.

___ = regexp(___, 'ignorecase')

Ignora maiúsculas e minúsculas.

Descrição

regexp varre o texto da esquerda para a direita e encontra ocorrências sem sobreposição. Sem palavras-chave de saída, as saídas vêm numa ordem fixa: início, fim, extensões dos tokens, trechos, tokens, nomes, split. Usar palavras-chave permite escolher só o que interessa.

Se str for um cell array, as saídas são cell arrays com uma entrada por elemento. Se nada casar, 'match' retorna um cell vazio (ou um char vazio com 'once').

Argumentos de entrada

str
Vetor de caracteres, string, ou cell array deles.
expr
Expressão regular. Parênteses criam tokens; (?<name>...) cria um token nomeado.
outkey / option
Seletor de saídas e opções como 'once', 'ignorecase', 'lineanchors'.

Argumentos de saída

start, finish
Vetores linha de índices.
match
Cell array com os textos casados (um único vetor de caracteres com 'once').
tokens
Para cada ocorrência, um cell array com o texto capturado por cada par de parênteses.
names
Struct cujos campos são os tokens nomeados.
split
Cell array com o texto entre as ocorrências.

Exemplos

Trechos e tokens

[tok, mat] = regexp('x1y22', '(\w)(\d+)', 'tokens', 'match');
mat
tok{2}
regexp('key=val', '(?<k>\w+)=(?<v>\w+)', 'names')
Saída
mat = 1×2 cell

    {'x1'}    {'y22'}
ans = 1×2 cell

    {'y'}    {'22'}
ans = struct with fields:

    k: 'key'
    v: 'val'

Posições e split

[s, e] = regexp('ab12cd345', '\d+')
regexp('a,b;c', '[,;]', 'split')
Saída
s = 1×2

     3     7
e = 1×2

     4     9
ans = 1×3 cell

    {'a'}    {'b'}    {'c'}

Observações

Quando a expressão não tem parênteses, o MATLAB retorna a ocorrência inteira como um único token; o MatLivre hoje retorna uma lista vazia em 'tokens' nesse caso, então adicione um grupo quando precisar de tokens.

Veja também

regexpi regexprep regexptranslate strfind contains extract