search and replace exact substring
8 views (last 30 days)
Show older comments
Notsure USA
on 8 Oct 2014
Commented: Image Analyst
on 9 Oct 2014
Hello,
I am parsing a string to check for an exact phrase. If the exact phrase is found, then I want to replace the phrase with a new phrase. The problem is, sometimes the phrase will be part of anothe phrase. Example:
wish to change the phrase "eps" to "%eps"
str = 'steps = eps*100 + beta*steps*eps';
newStr = 'steps = %eps*100 + beta*steps*%eps';
I'm having trouble picking out the exact phrase; each parsing phrase that I've come up with always catches something undesired e.g. 'steps' => 'st%eps' etc.
I've tried things like: st1 = regexprep(str,'^\w*(?=eps)^\w*','%eps')
(where I think I'm saing, look around the phrase "eps", if there's no "word" in the regexp sense, then replace the phrase with "%eps", but I'm obviously not there yet.
TIA,
CDQ (R2011b)
0 Comments
Accepted Answer
Azzi Abdelmalek
on 8 Oct 2014
Edited: Azzi Abdelmalek
on 8 Oct 2014
str = 'steps = eps*100 + beta*steps*eps';
regexprep([' ' str ' '],'(?<=[^a-zA-Z])eps(?=[^a-zA-Z])','%eps')
More Answers (1)
Image Analyst
on 8 Oct 2014
newString = strrep(oldString, ' eps', ' %eps');
2 Comments
Image Analyst
on 9 Oct 2014
You could do it in two lines of code instead of one:
newString = strrep(oldString, ' eps', ' %eps');
newString = strrep(newString, '*eps', '%eps');
Likewise in the event you have any other symbols. Sorry for not doing this in the first place - thought you'd know. I find this much easier, and more straightforward and intuitive than trying to compose/invent complicated regexp expressions, so that's why I suggested it. Looks like you're quite adept with regexp though and can understand things like ' (?<=[^a-zA-Z])eps(?=[^a-zA-Z]) ', and that's great, because not everybody can.
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!