ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MATLAB常用正则表达式记录

2020-11-29 12:29:56  阅读:205  来源: 互联网

标签:匹配 记录 正则表达式 MATLAB str regexp expression 替换


MATLAB正则表达式

一、正则表达式

正则表达式是一串用于定义某种模式的字符。在有些情况下(例如,在解析程序输入或处理文本块时),您通常会使用正则表达式在文本中搜索与该模式匹配的一组单词。

数据处理是matlab的长项,但是正则表达式在做一些不标准的excel数据处理等还是很有帮助的。

二、需要掌握的基础

元字符

元字符表示字母、字母范围、数字和空格字符。使用它们来构造广义的字符模式。
元字符就是对未知的一种替代
在这里插入图片描述

环顾断言

test='strxxx'; % 是一个字符串
% expr是表达式

环顾断言查找紧邻预期匹配项前后但并非该匹配项一部分的模式。

指针停留在当前位置,并且将放弃或不捕获对应于 test 表达式的字符。因此,前向断言可匹配重叠字符组。

环顾断言就是指定匹配范围

在这里插入图片描述

正则表达式

email = ‘[a-z_]+@[a-z]+.(com|net)’;

"+"是连接多个正则表达项
"[a-z_]“是匹配a-z的26个字母以及一个”_"符号
"\.“是指”."这个符号
"(com|net)"指"com"和"net"这两个字符串二选一

就这样,几个正则表达项任意随机(还是按自己的需求)组合在一起就构成了一个正则表达式

正则表达式的用途也就是两种:

  • 匹配(提取) | regexp(区分大小写)、regexpi(不区分大小写)
  • 替换(替换) | regexprep

三、常用实例

1、匹配(提取)

其中和关键的一个split,能解决大多数问题。
分割返回的是一个数组或者是cell,然后索引就可以直接使用。

我用的

%% 匹配
% 捕获字符向量中包含字母 x 的单词。 
str = 'EXTRA! The regexp function helps you relax.';
expression = '\w*x\w*';
matchStr = regexp(str,expression,'match')

% 关键(很多时候这一个就够啦):使用 split 关键字在分隔符处拆分文本
str = 'She sells sea shells by the seashore.';
expression = '[Ss]h.';
[match,~] = regexp(str,expression,'match','split')

% 查找 dd-mmm-yyyy 形式的日期,包括日、月和年的标文。
str = 'Here is a date: 01-Apr-2020';
expression = '(\d+)-(\w+)-(\d+)';
mydate = regexp(str,expression,'tokens');
mydate{:}

% 查找指定字符串之间的内容
% \w* 是标识的一个单词,注意单词的分割
str = '缺少工资表的年份:2018、2019、2020-3000, 缺少考核表的年份: 1999、2008;';
expression = '(?<=:)\w*.*';   % \w*: 任意单字符   .:任何单字符  *:0次或连续多次
matchStr = regexp(str,expression,'match')
expression = '\w*.*(?=,)';
matchStr = regexp(matchStr{1},expression,'match')
%% 替换-只需要替换一下函数就行,方法基本和匹配一样

在这里插入图片描述

2、替换

只需要替换一下函数就行,方法基本和匹配一样

参考:matlab正则表达式

标签:匹配,记录,正则表达式,MATLAB,str,regexp,expression,替换
来源: https://blog.csdn.net/qq_37832932/article/details/110127541

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有