MATLAB如何将字符串/通配符翻译为正则表达式?
来源:网络收集 点击: 时间:2024-05-18在我们使用正则表达式中,有时要按照正则表达式语法手动翻译一些字符串,非常繁琐而且手动非常不便,比如,我们想匹配fire\team\nice这个字符串,却不能直接传入regexp函数,因为其中有正则表达式转义字符\t和\n,会被视为tab和换行。
我们直接使用regexptranslate函数翻译,得到fire\\team\\nice,这个表达式就是原字符串等价的正则表达式。

regexptranslate函数有两种模式,步骤1说的是第一种escape模式。
这种模式下,将字符串按照字面意思翻译。
如图,翻译一个字符串,其中的字符$?()这些,都被转义。

如下是使用这种模式翻译字符串的一个简单示例。
我们要从一段长长的对话中匹配出两句,将这两句翻译为正则表达式再匹配,得到匹配结果。

regexptranslate函数的第二种模式是wildcard模式。这种模式用于转换通配符。通配符常见于搜索文件时使用,比如*.exe搜索exe文件,????.jpg可以搜索到文件名为四个字符的jpg文件。
regexptranslate函数可以把通配符翻译成具有同样匹配功能的正则表达式。如图。

如下图,是一个用正则表达式匹配文件名的例子。
请注意这里启用了dotexceptnewline选项,来防止.匹配时通过换行符。

通配符的应用场景可能和正则表达式不一样,正则表达式要结合字符串的编写方式去写。
如果要匹配文件名,还需要用正则表达式去掉文件名非法字符,比如\。
MATLAB版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_798330.html