matlab中builtin的regexp用法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

regexp是Regular expression 各取前三个字母组合成的命令。含义一目了然,做regular expression match(正则表达匹配,类似的python中是re包)

一、怎么用?

– [S, E, TE, M, T, NM, SP] = regexp (STR, PAT)
– […] = regexp (STR, PAT, “OPT1”, …)

两种表达,一种是全员式,输入STR字符串,和PAT 待匹配的模式;
输出:
S: start索引
E: 结束索引
TE:Token Extents 口令内容,即Pattern中被()匹配中的部分;
M: match 被匹配中的子字串,cell结构(元胞数组)
T:token,口令匹配中的元胞数组字符串
NM:name, 命名结构体
SP: split, 用pat分割的字符串元胞数组

二、Example

1.run

[S,E,TE,M,T,NM,SP]=regexp("BW20MisReallySmall,AtleastBW80MisGoodBW160",'BW(\d+)')
  • 注意(octave环境中)这里的pat需要是单引号, matlab中’'一对单引号是char array,一对双引号“”是字符串。字符串可以用“+”直接连接。char array必须用 strcat()

2. result

S =

1   27   38

E =

4   30   42

TE =
{
[1,1] =

 3   4

[1,2] =
[1,3] =

 40   42

}

M =
{
[1,1] = BW20
[1,2] = BW80
[1,3] = BW160
}

T =
{
[1,1] =
{
[1,1] = 20
}
[1,2] =
{
[1,1] = 80
}

[1,3] =
{
[1,1] = 160
}

}

NM =

1x3 struct array containing the fields:

SP =
{
[1,1] =
[1,2] = MisReallySmall,Atleast
[1,3] = MisGood
[1,4] =
}

3.简化返回

只想要特定的部分,比如匹配中字符串怎么办?
增加第三个选项,比如“tokens”

ret = regexp("BW20MisReallySmall,AtleastBW80MisGoodBW160",'BW(\d+)', "tokens")
结果
ret{1}
ans =
{
  [1,1] = 20
}

总结

演示了regrep函数的用法,包括全量返回式以及简化返回式两种

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值