matlab正则表达式教程,MATLAB正则表达使⽤技巧
前⾔
MATLAB正则表达⽤于快速搜索匹配字符串,相对于 strfind 函数查字符的完全匹配项,正则表达式能够定义特定的查模式。英⽂中将构造的正则表达式为 pattern,但是正则表达的语法使⽤起来较为复杂且使⽤场景不太熟悉,正则表达没有发挥出应有的功能。以下介绍⼏种典型的使⽤场景,提⾼程序的简洁,⽽且更加⽅便。
正则表达式函数
regexp
regexpi
regexptranslate
构建表达式的步骤
以下内容取⾃MATLAB帮助⽂档:
确定字符串中的独特模式
这需要根据字符形式的类同情况对要搜索的⽂本进⾏拆分。这些字符形式可以是⼀系列⼩写字母、⼀个美元符号后跟三个数字,然后跟有⼀个⼩数点等。
将每种模式表⽰为正则表达式
使⽤本⽂档中所述的元字符和运算符将搜索模式的每个段表⽰为正则表达式。然后,将这些表达式段组合成单个表达式以在搜索时使⽤。
调⽤合适的搜索函数
将要解析的⽂本传递给其中⼀个搜索函数(例如 regexp 或 regexpi),或者传递给⽂本替代函数 regexprep。
快速查头部的字符串
例如字符串 “ess.init.plant” ,获取 “ess” 字符串;可以将字符串加上⼀个特殊字符,将特殊字符作为⼀个标记位,另外将 “.” 作为另⼀个标记位,构造正则表达式,匹配头部字符串。最后将添加的标记位清除。
longName = 'ess.init.plant';
name= regexp( [ '$', longName], '\$\w*\.', 'match' );
name = name{ 1 }(2:end-1);
正则表达式中的标⽂灵活使⽤
以下内容出⾃ MATLAB 对 regexp 函数的帮助⽂档:
标⽂是对应于正则表达式部分的匹配⽂本。要创建标⽂,请将正则表达式部分括在圆括号中。标⽂的选项为 ‘tokens’,⽤来捕获标⽂的⽂本
str = 'Here is a date: 01-Apr-2020';
expression = '(\d+)-(\w+)-(\d+)';
mydate = regexp(str,expression,'tokens');
mydate{:}
ans =
'01' 'April' '2020'
利⽤标⽂,与 tokens 联⽤,可以直接匹配得到括号中的内容,⽽不是所有正则表达式匹配的内容。当使⽤ match 选项时,则是匹配所有正则表达式匹配的内容:
str = 'Here is a date: 01-Apr-2020';
expression = '(\d+)-(\w+)-(\d+)';
mydate = regexp(str,expression,'match');
mydate{:}
ans =
'01-Apr-2020'
对于标⽂,还可以使⽤ name 选项,配合 ? < name> 语法直接对匹配到特定标⽂的内容命名,以便对匹配得到的标⽂内容更容易识别:
str = 'Here is a date: 01-Apr-2020';matlab定义函数表达式
expression = '(?\d+)-(?\w+)-(?\d+)';
mydate = regexp(str,expression,'names')
mydate =
包含以下字段的 struct:
day: '01'
month: 'Apr'
year: '2020'
标⽂与数字之间的联系
表达式中的每个标⽂都被分配⼀个数字,从 1 开始,从左⾄右顺序递增。要在表达式的后⾯引⽤某个标⽂,请使⽤反斜杠并后跟标⽂编号进⾏引⽤。例如,引⽤表达式中第三组括号⽣成的标⽂时,请使⽤ \3
捕获匹配的 HTML 标记对组(例如 < a > 和 < /a >)以及这些标记之间的⽂本
Default
hstr = 'Default
';
expr = '.*?\1>';
[mat,tok] = regexp(hstr, expr, 'match', 'tokens');
mat{:}
下⾯对表达式 expr = ‘.?\1>’; 进⾏解析:
第⼀部分: ‘
第⼆部分: ‘.?>.?’ 匹配此 HTML 标记的其余部分(⼀直到 > 的字符),以及可能位于下⼀个左尖括号之前的任何字符。
最后⼀部分: ‘\1>’ 匹配结尾的 HTML 标记中的所有字符。此标记由 序列组成,其中 tag 表⽰捕获为标⽂的任何字符。
替代⽂本中的标⽂
regexprep('Norma Jean Baker', '(\w+\s\w+)\s(\w+)', '$2, $1')
在替代⽂本中使⽤标⽂时,请使⽤ $1、$2 等符号,⽽不要使⽤ \1、\2 等符号来引⽤标⽂。此⽰例捕获两个标⽂并颠倒它们的顺序。第⼀个标⽂ $1 为 ‘Norma Jean’,第⼆个标⽂ $2 为 ‘Baker’。请注意,regexprep 返回修改后的⽂本,⽽不是起始索引的向量
标签:匹配,技巧,正则表达式,mydate,标⽂,正则,MATLAB,regexp,⽂本
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论