replacing all occurrences of a string in a file using regexp

조회 수: 2 (최근 30일)
Robert Jones
Robert Jones 2022년 11월 10일
댓글: Robert Jones 2022년 11월 14일
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에서 Live Scripts and Functions에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by