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);

 Akzeptierte Antwort

Les Beckham
Les Beckham am 28 Aug. 2025
Bearbeitet: Les Beckham am 28 Aug. 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

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 28 Aug. 2025

2 Stimmen

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.

Kategorien

Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by