How to replace string that perfectly matchs the string?

3 vues (au cours des 30 derniers jours)
Erivelton Gualter
Erivelton Gualter le 22 Avr 2020
Commenté : Ameer Hamza le 23 Avr 2020
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.

Réponse acceptée

Ameer Hamza
Ameer Hamza le 22 Avr 2020
Modifié(e) : Ameer Hamza le 22 Avr 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 commentaires
Erivelton Gualter
Erivelton Gualter le 22 Avr 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 le 23 Avr 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by