matlab里面的正则表达式
(2010-08-26 13:17:17)
标签:
matlab正则表达regularexpression教育 |
分类: matlab及perl学习 |
1. 引言
正则表达式就是一个表达式(也是一串字符),它定义了某种字符串模式——利用正则表达式,可以
对大段的文字进行复杂的查找、替换等。本文将以 Matlab 为编程语言,讲解正则表达式的概念和使用方法,
并将在文末以实例说明正则表达式的实践应用。
Matlab 提供的正则表达式函数有三个:
regexp——用于对字符串进行查找,大小写敏感;
regexpi——用于对字符串进行查找,大小写不敏感;
regexprep——用于对字符串进行查找并替换。
简要介绍一下这三个函数,以 regexpi 为例 ——
读者可以先跳过这里,看过全文之后再来看这里。
用法 1:
[start end extents match tokens names] = regexpi('str', 'expr')
start 为匹配字符串的起始位置;end 为匹配字符串的终止位置;extents 为扩展内容,和'tokens'指示符
一起用,指示出现 tokens 的位置;match 即找到的匹配字串;tokens 匹配正则表达式中标记(tokens)的字串;
names 为匹配到的命名标记的标记名。
用法 2:
若不需要所有的输出,可以用下面的方式有选择的输出。
[v1 v2 ...] = regexpi('str', 'expr', 'q1', 'q2', ...)
'q1'、'q2' ...... 为
'start'、'end'、'tokens'、'tokensExtents'、'match'、'names'
之一,意义与前文相同。v1、
v2...... 的输出顺序与 q1、q2......
一致。
2. 单个字符的匹配
我们先从简单的开始 —— 以 regexpi
函数为例,不区分字符的大小写。假设你要搜索 'cat',搜索用
的正则表达式就是 'cat',这与文本编辑工具里常用的 CTRL+F
是一样的,即正则表达式 'cat'
匹配 'cat'、
'Cat'、'cAt'、'CAt'、'caT'、'CaT'、'cAT'、'CAT'。
为了方便,下面的叙述中字符串和正则表达式的''都省略不写。
2.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')
%用'end'指定输出 o2 为匹配正则表达式的子串的结束位置
o3=regexpi(str,pat,'match')
%用'match'指定输出 o3
为匹配正则表达式的子串
[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 =
正则表达式就是一个表达式(也是一串字符),它定义了某种字符串模式——利用正则表达式,可以
对大段的文字进行复杂的查找、替换等。本文将以 Matlab 为编程语言,讲解正则表达式的概念和使用方法,
并将在文末以实例说明正则表达式的实践应用。
Matlab 提供的正则表达式函数有三个:
regexp——用于对字符串进行查找,大小写敏感;
regexpi——用于对字符串进行查找,大小写不敏感;
regexprep——用于对字符串进行查找并替换。
简要介绍一下这三个函数,以 regexpi 为例
用法 1:
[start end extents match tokens names] = regexpi('str', 'expr')
start 为匹配字符串的起始位置;end 为匹配字符串的终止位置;extents 为扩展内容,和'tokens'指示符
一起用,指示出现 tokens 的位置;match 即找到的匹配字串;tokens 匹配正则表达式中标记(tokens)的字串;
names 为匹配到的命名标记的标记名。
用法 2:
若不需要所有的输出,可以用下面的方式有选择的输出。
[v1 v2 ...] = regexpi('str', 'expr', 'q1', 'q2', ...)
'q1'、'q2' ......
v2......
2.
我们先从简单的开始
的正则表达式就是
'Cat'、'cAt'、'CAt'、'caT'、'CaT'、'cAT'、'CAT'。
为了方便,下面的叙述中字符串和正则表达式的''都省略不写。
2.1
.
假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以
Matlab 程序实例:
clear;clc
str='ten,&8yn2tin6ui>&ton, t n,-356tpn,$$$$t#n,4@).,t@nT&nY';
pat='t.n';
o1=regexpi(str,pat,'start')
o2=regexpi(str,pat,'end')
o3=regexpi(str,pat,'match')
[o11,o22,o33]=regexpi(str,pat,'start','end','match')
输出为:
o22 =
o33 =
o1 =