How to replace string that perfectly matchs the string?

1 visualizzazione (ultimi 30 giorni)
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
Erivelton Gualter
Erivelton Gualter il 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 il 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.

Accedi per commentare.

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by