本周的文件交换选择

我们最好的用户提交

R2020B:模式(常规表达的新方法)

汪东城本周的选择是新的模式匹配在最新版本中添加的功能R2020B。

我一直都有一种爱恨的关系常用表达。这是一个用于串搜索的强大技术。这是强大的,但它也很复杂。在正则表达式上有书籍的事实表明它不是完全掌握的琐碎技术。我们过去挑选了与常规表达相关的几个条目,如普通快递的小抄一个正则表达式生成器应用程序

使用R2020B,有一种全新的搜索和修改文本方式。它涉及使用简单功能构建模式表达式的更简单的方法。

让我们来看看一个例子。这是一个字符串矢量。

str = [“当我加入MathWorks时,Matlab的版本是R2006A。”“当我搬到日本时,r2014a刚刚发行。”“现在,6年过去了,现在的版本是R2020B。”];

假设我想从文本中提取所有MATLAB版本。我需要做的就是搜索以“r”开始的模式,后跟4个数字,然后是“a”或“b”。

帕特=“R”+ digitspattern(4)+(“一种”|“b”
pat = pattern Matching: "R" + digitsppattern (4) + ("a" | "b")

为了允许不区分大小写的搜索,

帕特= caseInsensitivePattern (pat)
匹配:caseInsensitivePattern(“R”+ digitsppattern(4) +(“a”|“b”))

现在我们只需提取!

提取物(str,pat)
ANS = 3×1字符串阵列“R2006A”“R2014A”“R2020B”

供参考,如果我们用正则表达式执行此操作,

regexp(str,“[rr] \ d {4} [aabb]”“匹配”
ANS = 3×1个单元阵列{[“R2006A”]} {[“R2014A”]} {[“R2020B”]}

你是一个更容易理解的法官。

看一眼这个页面有关详细信息。模式将无法完全替换正则表达式,但不担心!您可以使用regexppattern.匹配正则表达式。

编辑:查看其中一个评论下面是一个稍微复杂一些的示例。

评论

试试吧,让我们知道你的想法在这里




MATLAB®R2020b发布

|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击在这里登录您的MathWorks帐户或创建新的。