replacing all occurrences of a string in a file using regexp

1 visualizzazione (ultimi 30 giorni)
Hello,
I have a very large file that contains sections like these below
VariableProp('GND_R', 'UD', '', '130mm')
VariableProp('T', 'UD', '', '1mm')
VariableProp('RC', 'UD', '', '38mm')
.
.
.
VariableProp('ALFAD', 'UD', '', '255deg')
I need to find all the occurrences of VariableProp(VarName, 'UD', '', VarValue) in the file, and change the VarValue
I am still learning the regexp topic, so in this case help would be appreciated
Thank you
  4 Commenti
Chris
Chris il 11 Nov 2022
I've found https://regexr.com/ to be a useful resource for figuring out regular expressions (though there may be some minor disagreement with regexp(), not sure), but Jan's prototype is more Matlabby, easier to understand, and perhaps more performant.
Rik
Rik il 11 Nov 2022
You are not giving many details.
What are the requirements for those names? Can any characters occurs between those quotes? If that includes single quotes, how are those escaped?
You say you want to change the VarValue part, but you haven't given any indication of what kind of change you want to make.

Accedi per commentare.

Risposta accettata

Jan
Jan il 11 Nov 2022
Modificato: Jan il 11 Nov 2022
Is it required to use regexp? If not:
C = readlines(FileName);
m = startsWith(C, "VariableProp('" + VarName + ", 'UD', '', ");
C(m) = sprintf("VariableProp('%s', 'UD', '', '%g%s')", VarName, newValue, newUnit);
writelines(FileName, C);
  6 Commenti
Jan
Jan il 11 Nov 2022
@Robert Jones: I guess you have these input data beside the file:
newData = {'GND_R', '130mm'; ...
'T', '1mm'; ...
'RC', '38mm'};
If you post the format of your input, a better matching suggestion could be given.
Then you can expand my code:
C = readlines(FileName);
for k = 1:height(newData)
VarName = newData{k, 1};
Value = newData{k, 2};
m = startsWith(C, "VariableProp('" + VarName + ", 'UD', '', ");
C(m) = sprintf("VariableProp('%s', 'UD', '', '%s')", VarName, Value);
end
writelines(FileName, C);

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Live Scripts and Functions in Help Center e File Exchange

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by