How do I find the last occurrence of a match using regexp in MATLAB?
Mostra commenti meno recenti
If I have the following string in MATLAB:
str = '/* This is a comment */ int x; /* sectionEndExample */';
How do I find the last comment that contains sectionEndExample? I have tried the following:
expr = ['^.*/\*.*sectionEndExample.*\*/'];
sectionEndIdx1 = regexp(str, expr);
But this always returns the sectionEndIdx1 as 1. I am looking in the documentation and have so far played around with the lookAround options. However, I can't figure out a way to do it in MATLAB :(
3 Commenti
Azzi Abdelmalek
il 15 Ago 2013
if you knpw the comment sectionEndExample, why are you looking for it?
Or do you want to find the last comment between * ?
Swati Tiwari
il 16 Ago 2013
Azzi Abdelmalek
il 16 Ago 2013
Ok, but what about the answers below?
Risposta accettata
Più risposte (3)
Is it what you want? If so, we can work a bit to improve it (in particular for allowing stars in the comment if relevant, which are not allowed with this pattern).
>> regexp(str, '[^\*]+(?=\*/$)', 'match')
ans =
' sectionEndExample '
Azzi Abdelmalek
il 15 Ago 2013
str = '/* This is a comment */ int x; /* sectionEndExample */';
pattern='(?<=/\*)[\w\s]+(?=\*/)';
sectionEndIdx1 = regexp(str, pattern,'match');
sectionEndIdx1=sectionEndIdx1{end}
3 Commenti
Azzi Abdelmalek
il 15 Ago 2013
You are right, even a space will make a problem.
Swati Tiwari
il 16 Ago 2013
Swati Tiwari
il 16 Ago 2013
1 Commento
Swati Tiwari
il 16 Ago 2013
Modificato: Azzi Abdelmalek
il 16 Ago 2013
Categorie
Scopri di più su Characters and Strings in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!