RegExp to remove code between triangle brackets <>

I want to remove text from a string contained within triangle brackets:
string1 = '<asdfasdf> text <asdf> <";>';
string2 = 'text';
I'm trying to use regexprep to remove the bracketed text, or regexp to extract non-bracketed text. Below code does not correctly identify all the bracketed strings.
string1 = '<asdfasdf> text <asdf> <";>';
exp = '^<.*>$';
ind = regexp(string1,exp);

 Respuesta aceptada

Les Beckham
Les Beckham el 28 de Ag. de 2025
Editada: Les Beckham el 28 de Ag. de 2025
Try using non-greedy matching (with a question mark: ?). This works on your example (assuming you want to remove the brackets as well as the text between them):
string1 = '<asdfasdf> text <asdf> <";>';
exp = '<.*?>';
newstring = regexprep(string1, exp, '')
newstring = ' text '
See documentation here

Más respuestas (1)

Walter Roberson
Walter Roberson el 28 de Ag. de 2025

2 votos

This question cannot be answered meaningfully unless we know the exact rules by which it is legal to have additional "<" and ">" characters within the string contained in triangle brackets.
For example,
string1 = '<asdf<sam>asdf> text <asdf> <";>';
string2 = '<asdf<asdf> text <asdf> <";>';
string3 = '<asdf>asdf> text <asdf> <";>';
string4 = '<asdf<sa<foo>m>asdf> text <asdf> <";>';
string5 = '<asdf<s<a<asdf> text <asdf> <";>';
string6 = '<asdf>s>a>asdf> text <asdf> <";>';
are all potentially valid "characters within the string contained in triangle brackets". Allowing nested <> complicates regexp parsing a lot, especially if there is no upper limit on the number of nesting levels permitted.

Categorías

Más información sobre Characters and Strings en Centro de ayuda y File Exchange.

Productos

Versión

R2024b

Preguntada:

el 28 de Ag. de 2025

Respondida:

el 28 de Ag. de 2025

Community Treasure Hunt

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

Start Hunting!

Translated by