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

标签 regex matlab

我是 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/

相关文章:

c++ - 使用 boost 正则表达式库有什么问题?

java - java中字母数字的正则表达式

python - 在伊博语文本中查找缩略词模式 (*'*)

javascript - 如何在 JS 中从正则表达式获取选定的 str.replace 值

javascript - 使用正则表达式呈现格式化的电话号码

xml - 当 matlab 中的 XML 文件内存在一些特殊的 UTF-8 字符时如何处理

Matlab 检测棋盘点缺陷

python - 无法在 matlab 中导入 keras(python 生成)模型 - 不存在的字段 "class_name"

matlab - 如何获取矩阵中非 NAN 元素的值?

matlab - 为什么/什么时候我应该更喜欢 MATLAB 而不是 Octave?