replacing all occurrences of a string in a file using regexp

4 次查看(过去 30 天)
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 个评论
Chris
Chris 2022-11-11
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 2022-11-11
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.

请先登录,再进行评论。

采纳的回答

Jan
Jan 2022-11-11
编辑:Jan 2022-11-11
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 个评论
Jan
Jan 2022-11-11
@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);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by