MATLAB正则表达式⑧:动态表达式
- 原创
- |
- 浏览:339
- |
- 更新:
- |
- 标签:MATLAB
本经验介绍正则表达式中强大的动态表达式。在MATLAB中还可以用于执行MATLAB命令。
因为动态表达式往往与捕获(token)相关,预备知识为正则表达式的分组与捕获。
动态表达式语法
(??expr) 把运行时确定的参数填入expr,然后将其解析为有效的正则表达式。
如图,当表达式'(\d+)-((??\\w{$1}))'匹配序列'3-ABC'时:
1. 首先(\d+)捕获到了3,然后遇到((??\\w{$1}))时,把$1替换为3
2. 接着把'\\w{3}'解析为'\w{3}',然后把该片段替换到原序列
3. 修改后匹配表达式为'(\d+)-(\w{3})'
- 相关内容非法爬取自百度经验
(??@cmd) 执行MATLAB命令(cmd),并且把执行结果替换回正则表达式。
如图,'(\d+\.\d+)≈(??@num2str(round(str2num($1))))'对前面的捕获使用系列函数取整转成字符串返回,效果如图,只有正确的约等于才被匹配到。
(?@cmd) 执行MATLAB命令但丢弃返回值,即返回值不会被填进正则表达式。
如图,可用于调试,比如cmd部分使用disp显示一些内容。
END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部














