MATLAB正则表达式⑦:捕获与引用

  • 原创
  • |
  • 浏览:481
  • |
  • 更新:
  • |
  • 标签:MATLAB 

介绍MATLAB中正则表达式捕获(token)与引用方法。包括序数和命名两种类型。

预备知识是正则表达式的分组。

工具/原料

  • MATLAB R2016a

顺序捕获 (Ordinal Token Operator)

  1. 1

    (expr)就可以捕获expr的内容,暂存到一个序列里。

    在正则表达式中,第n个这样的顶层括号括住的内容,就是第n个捕获。

    如图,表达式([A-Z]\d)即可捕获一个大写字母加数字,捕获序号为1。使用regexprep函数进行替换,$1即序号为1的捕获。'($1)'给每个捕获内容加了括号,效果如图。

    MATLAB正则表达式⑦:捕获与引用
  2. 2

    (expr)限定符 这种写法所捕获到的相当于((expr)限定符)。

    '([A-Z]\d){3}'会捕获6个字符而不是只有前两个。

    MATLAB正则表达式⑦:捕获与引用
  3. 3

    '\N' 以匹配第N个捕获。

    如图,'<(\w+).*>.*</\1>'可以捕获html中的一个闭合标签。意思是:如果(\w+)在某次匹配中捕获到了title,那么\1表示第一个捕获,得是title。

    MATLAB正则表达式⑦:捕获与引用
  4. 3
    相关内容未经授权抓取自百度经验
  5. 4

    (?(N)expr1|expr2) 可以判断第N个捕获是否成功(第N个捕获前提是可选匹配),如果捕获成功,此处匹配expr1,否则匹配expr2.

    例子如图,匹配处理器型号,(i?)是一个捕获,匹配字母'i'(可选)。后面根据是否捕获到'i'来判断是core-i3/i5/i7系列还是core-2,来区分型号的匹配。

    MATLAB正则表达式⑦:捕获与引用
    END

命名捕获 (Named Token Operator)

  1. 1

    (?<name>expr) 该表达式可以捕获expr并命名为name.

    如图,这样可以增强可读性,在替换表达式中使用$<name>来指定捕获。

    MATLAB正则表达式⑦:捕获与引用
  2. 2

    \k<name> 该表达式可以在正则表达式中匹配一个名为name的捕获。

    如图,是匹配html标签的例子。

    MATLAB正则表达式⑦:捕获与引用
  3. 3

    (?(name)expr1|expr2) 同样与前面的序号版本对应,功能也一样。

    示例如图,当然不建议使用中文命名,图示只是为了便于理解。

    MATLAB正则表达式⑦:捕获与引用
    END

注意事项

  • 捕获有着强大的功能,增强了匹配/替换的灵活性。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
相关标签MATLAB