gpt4 book ai didi

regex - 在 .m 文件的开头查找特定字符

转载 作者:行者123 更新时间:2023-12-02 03:24:46 25 4
gpt4 key购买 nike

我是 Matlab 的新手,我正在尝试编写一个程序,该程序应在 .m 文件中声明函数之前搜索管道符号|

例如:

% |
function y = add(x,z)
y = x+z
end

我对如何进行有一个想法,但我无法为其编写代码:

  1. 向用户询问应该解析的文件
  2. 打开文件
  3. 跳过文件开头的任何空行
  4. 提取函数声明前的第一条注释,根据|符号是否存在继续

到目前为止,我已经能够将什么放入代码中:

function y = filesearch()
%Ask user for file to parse
[fileName, filePath] = uiputfile('*.m','Choose file you want to parse');
% Open the file:
fid = fopen(filePath);

% Skip empty lines:
defLine = '';
while all(isspace(defLine))
defLine = strip_comments(fgets(fid));
end
% Check for presence of |

如您所见,我想不出可以删除注释(如果存在)并检查管道符号是否存在的行。

此外,虽然它现在不是优先事项,但如果它满足某些参数,我想在每一行的末尾使用这个符号。例如:

代数(行尾没有|符号)

R1 = 1; R2 = 2; R3 = 3;
Rs = R1 + R2 + R3;

差分(| 在 dydt 语句的末尾)

% |
function dydt = vanderpoldemo(t,y,Mu)
%VANDERPOLDEMO Defines the van der Pol equation for ODEDEMO.
dydt = [y(2); Mu*(1-y(1)^2)*y(2)-y(1)]; % |

对于上述差异情况,我认为需要一个 regex(一旦在函数声明之前找到了初始 |)来检查是否存在 | 在声明不是代数的行的末尾。

对于如何提取和检查初始评论的任何帮助或建议,我将不胜感激,如果可能的话,我该如何实现我的附加问题,我应该检查每行末尾是否存在符号。

最佳答案

以下代码逐行遍历文件并在注释中搜索管道符号。找到后就停止了:

fid = fopen('add.m');
% Check for presence of | in a comment
tline = fgetl(fid);
while ischar(tline)
if strfind(tline,'%') % find comments
if strfind(tline,'|') % find pipe
disp(tline) % do something
break; % stop while loop
end
end
tline = fgetl(fid);
end
fclose(fid);

关于regex - 在 .m 文件的开头查找特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31066284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com