regex: Extract then delete

20 visualizaciones (últimos 30 días)
Hau Kit Yong
Hau Kit Yong el 4 de Jul. de 2019
Comentada: Hau Kit Yong el 4 de Jul. de 2019
Is there a regex function that can extract matched strings and delete them after? I would like to do this without searching over the string twice using regexp(str, expr, 'match') followed by regexprep(str, expr, '').

Respuesta aceptada

Stephen23
Stephen23 el 4 de Jul. de 2019
Editada: Stephen23 el 4 de Jul. de 2019
"Is there a regex function that can extract matched strings and delete them after?"
Not really.
You could do something like this with regexprep and dynamic expressions to store the matched data in a workspace variable, but this will be slow, complex, and rather fragile.
One simple and efficient workaround would be to use both the match and split outputs: this example matches and removes the digits, leaving only the alphabetic characters:
>> S = 'abcd1234efghi6789jklm';
>> [X,Y] = regexp(S,'\d+','match','split');
>> Z = [Y{:}] % the new string with substrings removed
Z =
abcdefghijklm
>> X{:} % the matched substrings
ans =
1234
ans =
6789
  1 comentario
Hau Kit Yong
Hau Kit Yong el 4 de Jul. de 2019
Thank you! This works wonderfully.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre String Parsing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by