matlab中regexp命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中regexp命令相关的知识,希望对你有一定的参考价值。

我定义个字符串s='dfdf 343535E+02 342.333'
pat='\s+';
用a=regexp(s,pat,'split')后得到的a是s用空格分割后的数组a='dfdf 343535E+02 342.333',如果打个a(1),就能得到'dfdf',但a好像不是字符串数组,不知道它是什么数组,我想把其中的分成三块的另两块数据用str2num提取出来,但提示a不是字符串,请问是什么原因?怎么解决,万分感谢!

参考技术A regexp匹配正则表达式。[startIndex,endIndex]= regexp(str,expression),其中str是输入的字符串expression是正则表达式,返回值为子串的开始和结束下标。如果expression是普通的字符串,就变成了查找子串的下标;如果expression是正则表达式,就查找满足正则表达式的子串的下标。
举例:

>> [startIndex,endIndex]= regexp('hello world','or')
startIndex =
8
endIndex =
9
>> [startIndex,endIndex]= regexp('hello world',' ')
startIndex =
6
endIndex =
6
>> str = 'bat cat can car coat court CUT ct CAT-scan';
expression = 'c[aeiou]+t';
startIndex = regexp(str,expression)
startIndex =
5 17
参考技术B > str2num(a1,2)
ans =
34353500
>> a1,2
ans =
343535E+02
>> str2num(a1,3)
ans =
342.3330
>> a1,3
ans =
342.333

matlab中builtin的regexp用法

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

regexp @ matlab


前言

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")
结果
ret1
ans =

  [1,1] = 20

总结

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

以上是关于matlab中regexp命令的主要内容,如果未能解决你的问题,请参考以下文章

matlab中builtin的regexp用法

MySQL常用命令(四)-REGEXP

使用 regexp_replace 命令时遇到问题

PSFTP 如何使用 RegExp 从 Dir 命令获取文件名

linux常用命令-grep,egrep,regexp

matlab中,用啥命令清除刚刚画出的图像