如何使用Python正则表达式匹配MATLAB的函数语法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用Python正则表达式匹配MATLAB的函数语法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1409字,纯文字阅读大概需要3分钟。
内容图文
我试图在我们的内部库中找到所有MATLAB函数的所有输入/输出.我是新的(第一次)regex并且一直在尝试在Python的re库中使用多行模式.
MATLAB函数语法如下:
function output = func_name(input)
签名可以跨越多行.
我开始使用如下模式:
re.compile(r"^.*function (.*)=(.*)\([.\n]*\)$", re.M)
但我一直得到一个不受支持的模板操作符错误.任何指针都很赞赏!
编辑:
我现在有:
pattern = re.compile(r"^\s*function (.*?)= [\w\n.]*?\(.*?\)", 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:输入是什么,匹配什么,你想要正则表达式匹配什么,等等.
内容总结
以上是互联网集市为您收集整理的如何使用Python正则表达式匹配MATLAB的函数语法?全部内容,希望文章能够帮你解决如何使用Python正则表达式匹配MATLAB的函数语法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。