Matlab正则表达式

正则表达式语法
startIndex = regexp(str,expression)
[startIndex,endIndex] = regexp(str,expression)
out = regexp(str,expression,outkey)
outkey = match/once/tokens

其中
startIndex = regexp(str,expression) 返回 str 中与该正则表达式指定的字符模式匹配的每个子字符串的起始索引。如果没有匹配项,则 startIndex 为空数组。

[startIndex,endIndex] = regexp(str,expression) 返回所有匹配项的开始和结束索引。

out = regexp(str,expression,outkey) 返回 outkey 指定的输出。例如,如果 outkey 为 ‘match’,则 regexp 返回与该表达式匹配的子字符串而非其开始索引。

1、查找文本中的模式

// 查找以 c 开头并以 t 结尾且其中包含一个或多个元音的单词。
str = 'bat cat can car coat court CUT ct CAT-scan';
expression = 'c[aeiou]+t';
startIndex = regexp(str,expression)

其中:
‘c[aeiou]+t’ 指定以下模式:

  1. c 必须为第一个字符;
  2. c 必须后跟方括号内的一个字符 [aeiou];
  3. 括起的模式必须出现一次或多次,如 + 运算符所指示;
  4. t 必须为最后一个字符,括起的模式和 t 之间没有任何字符。

startIndex 中的值指示与正则表达式匹配的每个单词的第一个字符的索引。匹配单词 cat 在索引 5 处开始,coat 在索引 17 处开始。单词 CUT 和 CAT 不匹配,因为它们是大写的

2、从一个字符串中找到以"s1"开头,"s2"结尾的字符串

str =25s136125s235621s145123s235214s145321s245521s112321s242250’;
y = regexp(str,'(s1)\d*(s2)','match')

其中,“\d”代表一个数字,“\d*”代表多个数字。结果为

y =

  1×4 cell 数组

    {'s136125s2'}    {'s145123s2'}    {'s145321s2'}    {'s112321s2'}`

3、从字符串’abc/abc/abc/def/abc’中提取‘abc/def’

y = regexp( 'abc/abc/abc/def/abc' , ' (abc){1}/def ')  // 返回9
y = regexp( 'abc/abc/abc/def/abc' , ' (abc){1}/def','match')  // 返回‘abc/def’

其中,{}中的数字表示(abc)出现的次数;

4、抽取一个字符串中摸个符号前的子字符串

str = 'This is a good place to learn MATLAB/Simulink:Hyowinner''s School';
y = regexp(str, '.*:','match');

其中,“.”表示任意字符,可以是字母、空格和数字,“*”表示连续出现一个或多个;

5、抽取“LOCUS”后的字符串

str ='LOCUS AB01625 25871 bp DNA PRI 19-JUN-1999 DEFINITION Homo sapiens OCTN2 gene,compete cds.ACCESSION AB016625 NID g4126717 VERSIO LOCUS AF16625 2581 bp RNA ACCESSION AB016625 NID g4126717 VERSIOLOCUS UD4525 2581 bp mRNA';
y = regexp(str,'(?<=LOCUS)\s\w*\s','match');    //返回AB01625  AF16625  UD4525 

其中,(?<=LOCUS)\s\w*\s 表示从“LOCUS”开始但是不包括“LOCUS”,\s 表示空格, \w 表示word,可以是字符或数字;\w*表示以任意数量的字母数字或下划线字符开头;

6、对上面str,匹配日期

str ='LOCUS AB01625 25871 bp DNA PRI 19-JUN-1999 DEFINITION Homo sapiens OCTN2 gene,compete cds.ACCESSION AB016625 NID g4126717 VERSIO LOCUS AF16625 2581 bp RNA ACCESSION AB016625 NID g4126717 VERSIOLOCUS UD4525 2581 bp mRNA';
y =regexp(str,'\d{2}-(\w){3}-(\d){4}', 'match');   // 返回  19-JUN-1999

"-"表示分割,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值