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.匹配正则表达式。
编辑:查看其中一个评论下面是一个稍微复杂一些的示例。评论
试试吧,让我们知道你的想法在这里。
- 类别:
- 挑选
评论
要发表评论,请点击在这里登录您的MathWorks帐户或创建新的。