How to replace string that perfectly matchs the string?

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.

 Risposta accettata

Ameer Hamza
Ameer Hamza il 22 Apr 2020
Modificato: Ameer Hamza il 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 Commenti

How I missed that.
Thank you Ameer.
Best,
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);'
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.

Accedi per commentare.

Più risposte (0)

Categorie

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by