如何使用Python正则表达式匹配MATLAB的函数语法?
发布时间:2020-12-20 11:12:43 所属栏目:Python 来源:网络整理
导读:我试图在我们的内部库中找到所有MATLAB函数的所有输入/输出.我是新的(第一次) regex并且一直在尝试在 Python的re库中使用多行模式. MATLAB函数语法如下: function output = func_name(input) 签名可以跨越多行. 我开始使用如下模式: re.compile(r"^.*funct
我试图在我们的内部库中找到所有MATLAB函数的所有输入/输出.我是新的(第一次)
regex并且一直在尝试在
Python的re库中使用多行模式.
MATLAB函数语法如下: function output = func_name(input) 签名可以跨越多行. 我开始使用如下模式: re.compile(r"^.*function (.*)=(.*)([.n]*)$",re.M) 但我一直得到一个不受支持的模板操作符错误.任何指针都很赞赏! 编辑: 我现在有: pattern = re.compile(r"^s*function (.*?)= [wn.]*?(.*?)",re.M|re.DOTALL) 给出如下匹配的匹配: function [fcst,spread] = ... VolFcstMKT(R,... mktVol,... calibrate,... spread_init,... fcstdays,... tsperyear) if(calibrate) if(nargin < 6) tsperyear = 252; end templen = length(R) 我的问题是为什么它给出额外的线而不是在第一个停止? 解决方法
如果你传递re.T而不是re.M作为re.compile的第二个参数(re.template – 一个当前未记录的条目 – 是打算使用它的那个),你得到的特殊(内部)错误应该会出现,简而言之,模板RE不支持重复或回溯).在调用re.compile之前,你能打印re.M来显示它在代码中的价值吗?
一旦修复了,我们就可以讨论你想要的RE的细节(简而言之:如果输入部分可以包括括号你运气不好,否则re.DOTALL和你的模式的一些重写应该有帮助) – 但修复这个怪异内部错误发生似乎优先考虑. 编辑:诊断出这个错误(根据下面这个评论的Q),继续讨论OP的当前问题:re.DOTALL | re.MULTINE,加上模式结尾处的’$’,加上到处都是贪心匹配(使用.*,而不是.*?表示非贪婪),所有这些一起确保如果正则表达式匹配,它将尽可能广泛地匹配……这正是这个组合所要求的.可能最好用一个特定的例子打开另一个Q:输入是什么,匹配什么,你想要正则表达式匹配什么,等等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读