Replace with regexprep in text file

2 vues (au cours des 30 derniers jours)
Tiasa Ghosh
Tiasa Ghosh le 6 Sep 2018
Commenté : Tiasa Ghosh le 6 Sep 2018
Hello everybody! I am using regexprep to replace a set of characters in a text file.
For example: I am trying to replace +, - , /, ) , (| occurences in my text file with |€. so i used the following code
fid = fopen('repSymbols.txt','wt');
inData = fileread('equations');
fprintf(fid,'%s',regexprep(inData,'[=+)-/(]','€'));
fclose(fid);
But when I use this, it also replaces the occurences of dot . in the file. I don't want the dots to be replaced. Any idea on this?

Réponse acceptée

OCDER
OCDER le 6 Sep 2018
The ")-/" term in the pattern search is actually interpretted as all characters from ")" to "/". So it's the following:
char(uint8(')'):uint8('/'))
ans =
')*+,-./'
Therefore the expanded search pattern does include the ".".
To fix this, use the escape character "\" before the character "-" like this:
inData = '=+)-/(...';
regexprep(inData,'[=+)-/(]','€') %Incorrect
ans =
'€€€€€€€€€'
regexprep(inData,'[=+)\-/(]','€') %Correct
^ add this \
ans =
'€€€€€€...'
  1 commentaire
Tiasa Ghosh
Tiasa Ghosh le 6 Sep 2018
That worked! thanks

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

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

Community Treasure Hunt

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

Start Hunting!

Translated by