How to replace string that perfectly matchs the string?

1 view (last 30 days)
The title might be a litle vague, but I am looking to replace a string on a text by another string using regexprep or any other function. However, all my attempts have failed.
For the following example:
str = 'a = 1; b = 2; var1 = a + b; bar1 = a*b;'
If I use regexprep
>> regexprep(str, 'a', 'v1')
ans =
'v1 = 1; b = 2; vv1r1 = v1 + b; bv1r1 = v1*b;'
However, I was looking for:
'v1 = 1; b = 2; var1 = v1 + b; bar1 = v1*b;'
I have been reading the documentation and try differents aproachs, but I could not figure out this. I have a feeling that regexprep can easily solve this problem. I just need to trick this a bit.
Tks in advance, I will keep digging on.

Accepted Answer

Ameer Hamza
Ameer Hamza on 22 Apr 2020
Edited: Ameer Hamza on 22 Apr 2020
str = 'a = 1; b = 2; var1 = a + b; bar1 = a*b;';
new_str = regexprep(str, 'a\>', 'v1');
Result:
new_str =
'v1 = 1; b = 2; var1 = v1 + b; bar1 = v1*b;'
  3 Comments
Erivelton Gualter
Erivelton Gualter on 22 Apr 2020
Hi Ameer,
Actualy it did not work quite well. Check the following example:
str = 'An = B(m+1:n,m+1:n); C = D(1:m,mn+1:n);'
It is returning the following:
regexprep(str, 'n\>', 'X')
ans =
'AX = B(m+1:X,m+1:X); C = D(1:m,mX+1:X);'
However, the output should be:
ans =
'An = B(m+1:X,m+1:X); C = D(1:m,mn+1:X);'
Ameer Hamza
Ameer Hamza on 23 Apr 2020
For this specific case
str = 'An = B(m+1:n,m+1:n); C = D(1:m,mn+1:n);';
new_str = regexprep(str, '([^\w])n\>', '$1X')
Result:
new_str =
'An = B(m+1:X,m+1:X); C = D(1:m,mn+1:X);'
The actual regular expression depends on the complete specification of the string.

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!