matlab 正则化表达式_MATLAB 正则表达式(一)(转)
http://blog.sina.com.cn/s/blog_53f29119010009uf.html
正则表达式这个词上大学的时候就听同寝室的一个家伙常念叨——那家伙当然很厉害啦,现在已经发洋财去了——直到昨天又遇到,想起还有这么一回事。刚刚看的时候以为一点点内容一个上午就搞掂了,看了一会儿,才越发觉得头发晕,眼发绿——还真tmd难~~。看到今天才发现,原来是书太滥,呵呵。。。不过,要想把正则表达式写清楚还真得费些篇幅啊~~第一次接触正则表达式,有错误的地方还请玩过的大侠多多指正啊!~
正则表达式就是一个表达式(也是一串字符),它定义了某种字符串模式。利用正则表达式,可以对大段的文字进行复杂的查找、替换等。
matlab提供的正则表达式函数有三个:
regexp——用于对字符串进行查找;
regexpi——用于对字符串进行查找,但不区分大小写;
regexprep——用于对字符串进行查找并替换。
今天是第一部分——单个字符的匹配我们先从简单的开始——以regexpi函数为例。假设你要搜索一个包含字符'cat'的字符串,搜索用的正则表达式就是'cat'。如果搜索对大小写不敏感,单词'catalog'、'Catherine'、'sophisticated'都可以匹配。也就是说:
正则表达式:'cat'
匹配:'cat', 'catalog', 'Catherine','sophisticated'
这个好像和我们通常在记事本里ctrl+F弄出来的东西差不多哈,呵呵。。。(btw:为了方便,下面的叙述中字符串和正则表达式的''都省略不写。)
1 句点符号 '.' ——匹配任意一个(只有一个)字符(包括空格)。
假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以't'字母开头,以'n'字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式,你可以使用一个通配符——句点符号'.'。这样,完整的表达式就是't.n',它匹配'tan'、'ten'、'tin'和'ton',还匹配't#n'、'tpn'甚至't n',还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格:
正则表达式:t.n
匹配:ten, tin, ton, t n, tpn, t#n, t@n
Matlab例子程序:
clear;clc
str='ten,&8yn2tin6ui>&ton, t n,-356tpn,$$$$t#n,4@).,t@nT&nY';
pat='t.n';
o1=regexpi(str,pat,'start')%用'start'参数指定输出o1为匹配正则表达式的子串的起始位置
o2=regexpi(str,pat,'end')%用'start'参数指定输出o1为匹配正则表达式的子串的结束位置
o3=regexpi(str,pat,'match')%用'match'参数指定输出o2为匹配正则表达式的子串
[o11,o22,o33]=regexpi(str,pat,'start','end','match') %同时输出起始位置和子串
输出为:
o22 =
3 8 13 18 23 28 33 36
o33 =
'ten' 'tin' 'ton' 't n' 'tpn' 't#n' 't@n' 'T&n'
o1 =
1 10 18 23 31 39 48 51
o2 =
3 12 20 25 33 41 50 53
o3 =
'ten' 'tin' 'ton' 't n' 'tpn' 't#n' 't@n' 'T&n'
o11 =
1 10 18 23 31 39 48 51
o22 =
3 12 20 25 33 41 50 53
o33 =
'ten' 'tin' 'ton' 't n' 'tpn' 't#n' 't@n' 'T&n'
2 方括号符号 '[oum]' ——找到方括号中的任意一个即是匹配
为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号('[]')里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式't[aeio]n'只匹配'tan','Ten','tin'和'ton'。但'Toon','taen'不匹配,因为在方括号之内你只能匹配单个字符:
正则表达式:t[aeio]n
匹配:tan, ten, tin, ton
matlab 例子程序:
clear;clc
str='ten,&8yn2tin6ui>&ton, t n,-356tpn,$$$$t#n,4@).,t@nT&nY';
pat='t[aeiou]n';
o1=regexpi(str,pat,'start')%用'start'参数指定输出o1为匹配正则表达式的子串的起始位置
o2=regexpi(str,pat,'end')%用'start'参数指定输出o1为匹配正则表达式的子串的结束位置
o3=regexpi(str,pat,'match')%用'match'参数指定输出o2为匹配正则表达式的子串
[o11,o22,o33]=regexpi(str,pat,'start','end','match') %同时输出起始位置和子串
输出结果为
o1 =
1 10 18
o2 =
3 12 20
o3 =
'ten' 'tin' 'ton'
o11 =
1 10 18
o22 =
3 12 20
o33 =
'ten' 'tin' 'ton'
3 方括号中的连接符 '[c1-c2]' ——匹配从字符c1开始到字符c2结束的字母序列(按字母表中的顺序)中的任意一个。
为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号('[]')里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式't[aeio]n'只匹配'tan'、'Ten'、'tin'和'ton'。但'Toon'不匹配,因为在方括号之内你只能匹配单个字符:
正则表达式:t[a-z]n
匹配:tan, tbn,tcn,tdn,ten,…, txn, tyn,tzn
matlab 例子程序:
clear;clc
str='ten,&8yn2tin6ui>&ton, t n,-356tpn,$$$$t#n,4@).,t@nT&nY';
pat='t[a-z]n';
o1=regexpi(str,pat,'start')%用'start'参数指定输出o1为匹配正则表达式的子串的起始位置
o2=regexpi(str,pat,'end')%用'start'参数指定输出o1为匹配正则表达式的子串的结束位置
o3=regexpi(str,pat,'match')%用'match'参数指定输出o2为匹配正则表达式的子串
[o11,o22,o33]=regexpi(str,pat,'start','end','match') %同时输出起始位置和子串
4 \n ——特殊字符就是由'\'引导的,代表有特殊意义或不能直接输入的单个字符。在使用printf函数输出时我们常用'\n'来代替回车符,这里也是同样的道理,用\n在正则表达式中表示回车符。类似的还有\t横向制表符,'\*'表示'*'等。后一种情况用在查询在正则表达式中有语法作用的字符。详见下表。
下面是一些匹配单个字符的转义字符正则表达式及所匹配的值。
\xN或\x{N} 匹配八进制数值为N的字符
\oN或\o{N} 匹配十六进制数值为N的字符
\a Alarm(beep)
\b Backspace
\t 水平Tab
\n New line
\v 垂直Tab
\f 换页符
\r 回车符
\e Escape
\c 某些在正则表达式中有语法功能或特殊意义的字符c,要用\c来匹配,而不能直接用c匹配
matlab程序例子
clear;clc
str='l.[a-c]i.$.a';
pat1='.';pat2='\.';
o=regexpi(str,pat1,'match')
o1=regexpi(str,pat2,'match')
输出为:
o =
'l' '.' '[' 'a' '-' 'c' ']' 'i' '.' '$' '.' 'a'
o1 =
'.' '.' '.'
5 \w,\s和\d——范围表达式
和上面的\n等表中的转义字符有所不同,\w,\s,\d等匹配的不是某个特定的字符,而是某一类字符。具体说明如下:
\w匹配任意的单个文字字符,相当于[a-zA-Z0-9_];
\s匹配任意的单个空白字符,相当于[\t\f\n\r];
\d匹配任意单个数字,相当于[0-9];
\S匹配除空白符以外的任意单个字符,相当于[^\t\f\n\r]——方括号中的^表示取反;
\W匹配任意单个字符,相当于[^a-zA-Z0-9_];
\D匹配除数字字符外的任意单个字符,相当于[^0-9]。
matlab程序例子,这里引用的是matlab帮助中的例子:
str='easy as 1,2,3';%这个字符串可真有点意思,呵呵
pat='\d';
[o1,o2]=regexpi(str,pat,'start','match')
输出结果为:
o1 =
9 11 13
o2 =
'1' '2' '3'
matlab 正则化表达式_MATLAB 正则表达式(一)(转)相关推荐
- matlab 正则化表达式_Matlab-------regexp正则表达式
句点符号 '.' --匹配任意一个(只有一个)字符(包括空格). 例如:t.n,它匹配tan. ten.tin和ton,还匹配t#n.tpn甚至t n,还有其他许多无意义的组合. Matlab例子程序 ...
- 爬虫(1)-正则化表达式爬取猫眼电影排行榜前100部电影
爬取猫眼电影排行榜前100部电影 文章目录 爬取猫眼电影排行榜前100部电影 1.抓取首页 2.正则化表达式提取信息 3.保存到文件中 4.抓取前100部电影 认为有用的话请点赞,码字不易,谢谢. 其 ...
- 关于C语言用问号表达式(正则表达式)输入三个数求最大数的问题
问题概述: 用C语言求三个数中的最大数这一问题是C语言的基础性问题,有多种可实施办法下面介绍两种办法一种用问号表达式(正则表达式),另一种用函数法. 代码实现:问号表达式 #include<st ...
- matlab显示函数表达式_Matlab求解极限、微积分问题
MATLAB提供了解决微分和积分微积分的各种方法,求解任何程度的微分方程和极限计算.可以轻松绘制复杂功能的图形,并通过求解原始功能以及其衍生来检查图形上的最大值,最小值和其他固定点. 本章将介绍微积分 ...
- matlab显示函数表达式_MATLAB在绘图时的用法——线形图
点击上方蓝字 关注我们 MATLAB有很强的绘图功能,我们可以通过简单的代码画出一些直观而漂亮的代码.今天,我们一起来学习基本绘图常用函数. 在MATLAB中绘图首先需要设定x的范围,一般使用冒号来 ...
- matlab函数表达式里分号_MatLab常见函数和运算符号使用详解
基本运算 convhull :凸壳函数 cumprod :累计积 cumsum :累计和 cumtrapz :累计梯形数值积分 delaunay :Delaunay三角化 dsearch :求最近点 ...
- R语言学习之正则化表达式
文章目录 1.grep()与grepl()函数 2.替换函数sub()与gsub()函数 3.regexpr()函数 4.gregexpr()函数 5.regexec()函数 6.字符串拼接 7.字符 ...
- matlab 文件名分离_MATLAB偏微分方程
4.8.2 偏微分方程 在自然科学的很多领域内,都会遇到微分方程初值问题,特别是偏微分方程,它的定解问题是描述自然界及科学现象的最重要的工具.可以说,几乎自然界和各种现象都可以通过微分方程(特别是偏 ...
- matlab stract结构_MATLAB 的基础知识
任何变量在MATLAB中都是以数组形式存储和运算. MATLAB中使用方括号([ ])给出所有数组的元素,同一行中的元素间用逗号( , )或者空格分隔,不同行之间用分号( ; )隔开. 空数组可以用于 ...
最新文章
- 深入浅出 Java Concurrency (29): 线程池 part 2 Executor 以及Executors[转]
- 干货!top白帽子 Gr36_ 手把手教你挖漏洞|2017 先知白帽大会
- 【转载】让我们来FirePHP
- Bytom移动端钱包SDK开发基础
- linux系统管理Linux系统实验,实验4-Linux系统管理实验.pdf
- HDU - 6967 G I love data structure 线段树维护矩阵 + 细节
- P2564 [SCOI2009]生日礼物
- java查看jvm对象个数_jmap-查看 jvm 内存对象信息
- JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
- Magento(CE1.X)自带模块解析一
- mineData地图添加自定义Maker图标
- 【霜雪千年】MMD动作镜头下载
- 把一个base64编码的图片绘制到canvas (canvas的图片在转成dataurl)
- 小宝图盟机器人软件开发平台
- 清北学堂(2019 4 30 ) part 3
- jdk8官方下载路径
- 判断TTS语音朗读是否结束
- python中prettytable模块_PrettyTable模块
- 怎么取名都不队-DevOps
- 【运维面试】公司拒绝了你,后来又通知你去上班,还要不要去?
热门文章
- 页面加载事件html5,JavaScript页面加载事件实例讲解
- git 删除本地仓库中的分支_git常用命令行 新建分支 删除分支 提交
- python怎么控制小数点位数_谈谈关于Python里面小数点精度控制的问题
- python两个一维数组合并_python:16.合并两个排序的链表
- java的环境变量设置_Java开发环境不再需要配置classpath
- linux vps 迁移数据 ip screen ctrl a d,Linux学习笔记之screen命令的使用
- 如何通过TortoiseGit(小乌龟)把本地项目上传到github上
- java.util.Properties类的介绍-配置文件的读写【-Z-】
- 网页图表Highcharts实践教程之图表代码构成
- 【转】Android SDK Manager 更新方法