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')
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')
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.