匹配正则表达式(区分大小写)
返回每个子字符串的起始索引startIndex
= regexp (str
,表达式
)str
匹配由正则表达式指定的字符模式。如果没有匹配,startIndex
为空数组。
[
返回所有匹配项的起始和结束索引。startIndex
,endIndex
] = regexp(str
,表达式
)
___= regexp (___,'forcecelloutpul')
将每个输出参数作为标量单元格返回。单元格包含数字数组或子字符串,它们被描述为前面语法的输出。您可以包含任何输入,并请求前面语法的任何输出。
找到开头的单词c
最后,t
,其中包含一个或多个元音。
str ='蝙蝠猫可以汽车外套法院切割ct cat扫描';表达=“c(五个母音字母)+ t”;startIndex = regexp (str,表达)
startIndex =.1×25 17
正则表达式“c(五个母音字母)+ t”
指定此模式:
c
必须是第一个字符。
c
必须后跟括号内的一个字符,(五个母音字母)
.
用括号括起来的模式必须出现一次或多次,如+
操作符。
t
必须是最后一个字符,在括号模式和t
.
值startIndex
指定与正则表达式匹配的每个单词的第一个字符的索引。匹配的单词猫
从索引5开始外套
从指数17开始。这句话减少
和猫
不匹配,因为它们是大写的。
查找单元格数组中字符向量中大写字母和空格的位置。
str = {马德里,西班牙,“罗密欧与朱丽叶”,MATLAB是伟大的};capExpr =“[a - z]”;spaceExpr ='\ s';capStartIndex = regexp (str, capExpr);spaceStartIndex = regexp (str, spaceExpr);
capStartIndex
和spaceStartIndex
单元格数组是因为输入吗str
是单元格数组。
查看大写字母的索引。
celldisp (capStartIndex)
capStartIndex{1} = 1 9 capStartIndex{2} = 1 11 capStartIndex{3} = 1 2 3 4 5 6
查看空间的索引。
celldisp (spaceStartIndex)
spaceStartIndex{1} = 8 spaceStartIndex{2} = 6 10 spaceStartIndex{3} = 7 10
捕获包含字母的字符向量中的单词x
.
str =“多!regexp函数可以帮助你放松。”;表达='\ w * x \ w *';matchstr = regexp(str,表达式,“匹配”)
matchStr =1 x2单元格{“正则表达式”}{'放松'}
正则表达式'\ w * x \ w *'
指定字符向量:
以任意数量的字母数字或下划线字符开头,\ w *
.
包含小写字母x
.
的后面以任意数量的字母数字或下划线字符结束x
,包括没有,如\ w *
.
将字符向量分割为几个子字符串,其中每个子字符串由^
的性格。
str = [把这篇文章分成几部分];表达=“\ ^”;splitStr = regexp (str,表达式,“分裂”)
splitStr =1 x3单元格{'split'} {'这个文本进入'} {'几件'}
因为插入符号在正则表达式中有特殊含义,所以在它前面加上转义字符,即反斜杠(\
).要在其他分隔符(如分号)上分割字符向量,不需要包含反斜杠。
属性捕获匹配正则表达式的字符向量部分“匹配”
关键字,其余不匹配的部分使用“分裂”
关键字。
str =“她在海边卖贝壳。”;表达=“[Ss] h。”;(匹配,noMatch) = regexp (str,表达式,“匹配”,“分裂”)
匹配=1 x3单元格‘她’‘她’{}{}{“商店”}
noMatch =1 x4单元格{0x0 char} {' sell sea'} {' ls by the sea'} {'re.'}
正则表达式“[Ss] h。”
指定:
年代
或年代
是第一个字。
h
是第二个字符。
第三个字符可以是任何字符,包括空格,如点(.
).
当字符向量中的第一个(或最后一个)字符与正则表达式匹配时,从“分裂”
关键字是一个空字符向量。
可选地,从子字符串重新组合原始字符向量。
combinedStr = strjoin (noMatch匹配)
COLLACTSTR ='她在海边出售海贝壳。
通过在正则表达式中定义一个标记来查找HTML标记的名称。符号用圆括号表示,()
.
str ='<标题>我的标题 title>这里是一些文本。 p>'
;表达=' < (\ w +).*>.*\ 1 > ';(令牌,匹配)= regexp (str,表达式,“令牌”,“匹配”);
正则表达式< (\ w +).*>.*\ 1 >
指定此模式:
< (\ w +)
查找后跟一个或多个字母数字或下划线字符的开始尖括号。封闭\ w +
在括号中捕获标记中的HTML标记的名称。
。*>
查找任意数量的附加字符,如HTML属性和右尖括号。
< / \ 1 >
查找与第一个标记对应的结束标记(由\ 1
).结束标签包含表单< / tagname >
.
查看令牌和匹配的子字符串。
celldisp(令牌)
token {1}{1} = title token {2}{1} = p
celldisp(匹配)
匹配{1} =我的标题 title>匹配{2} = 这是一些文本。 p>
解析日期,可以出现在天或月,以下形式:mm / dd / yyyy
或dd-mm-yyyy
.使用命名令牌来标识日期的每个部分。
str ='01/11/2000 20-02-2020 03/30/2000 16-04-2020';表达= ['(?<月> \ d +)/(?\ d +)/(?<年> \ d +)|' ......‘(? <天> \ d +) -(? <月> \ d +) -(? <年> \ d +) '];tokenNames = regexp (str,表达式,“名字”);
正则表达式指定了这个模式:
(? <名称> \ d +)
查找一个或多个数字,并将结果分配给由名称指示的令牌。
|是符合逻辑的或
运算符,表示有两种可能的日期模式。在第一个模式中,斜杠(/
)分隔令牌。在第二个模式中,连字符(-
)分隔令牌。
查看命名令牌。
为k = 1:length(tokenNames) disp(tokenNames(k))结束
Month: '01' day: '11' year: '2000' Month: '02' day: '20' year: '2020' Month: '03' day: '30' year: '2000' Month: '04' day: '16' year: '2020'
查找单词的大写和小写实例。
默认情况下,正则表达式
执行区分大小写的匹配。
str =一个带有大写和小写文本的字符向量;表达=“\ w *案”;matchstr = regexp(str,表达式,“匹配”)
matchStr =1 x1单元阵列{'小写'}
正则表达式指定字符向量:
以任意数量的字母数字或下划线字符开头,\ w *
.
以字面文本结束情况下
.
的regexpi
函数使用相同的语法正则表达式
,但执行不区分大小写的匹配。
matchWithRegexpi = regexpi (str,表达式,“匹配”)
matchWithRegexpi =1 x2单元格{“大写”}{“小写”}
或者,禁用区分大小写的匹配正则表达式
使用“ignorecase”
选择。
matchWithIgnorecase = regexp (str,表达式,“匹配”,“ignorecase”)
matchWithIgnorecase =1 x2单元格{“大写”}{“小写”}
对于多个表达式,使用的表达式禁用区分大小写的匹配(我)?
搜索国旗。
表达= {“(? -我)\ w *案”;......“(?我)\ w *案”};matchstr = regexp(str,表达式,“匹配”);celldisp (matchStr)
matchStr{1}{1} =小写matchStr{2}{1} =大写matchStr{2}{2} =小写
创建包含换行符的字符向量,\ n
,并使用正则表达式进行解析。自正则表达式
返回matchStr
作为包含有多行文本的单元格数组,可以将文本从单元格数组中取出以显示所有行。
str = sprintf (“abc \ n de”);表达=”。*’;matchstr = regexp(str,表达式,“匹配”);matchStr {:}
Ans = 'abc de'
默认情况下,点(.
)匹配每个字符,包括换行符,并返回一个等价于原始字符向量的单个匹配。
将换行符从匹配中排除“dotexceptnewline”
选择。这将为每一行文本返回单独的匹配。
matchStrNoNewline = regexp (str,表达式,“匹配”,“dotexceptnewline”)
matchStrNoNewline =1 x2单元格{' abc '}{‘德’}
属性查找每一行的第一个或最后一个字符^
或$
元字符,'lineanchors'
选择。
表达=“美元”。;Lastinline = regexp(str,表达式,“匹配”,'lineanchors')
lastInLine =1 x2单元格{' c '}{“e”}
在一段文本中查找匹配,并在标量单元格中返回输出。
找出以c开头,以t结尾,中间包含一个或多个元音的单词。返回标量单元格中的起始索引。
str ='蝙蝠猫可以汽车外套法院切割ct cat扫描';表达=“c(五个母音字母)+ t”;startIndex = regexp (str,表达式,“forceCellOutput”)
startIndex =.1 x1单元阵列{17 [5]}
要以数字数组的形式访问起始索引,请在单元格中建立索引。
startIndex {1}
ans =1×25 17
返回匹配和非匹配的子字符串。每个输出在它自己的标量单元格中。
(匹配,noMatch) = regexp (str,表达式,“匹配”,“分裂”,“forceCellOutput”)
匹配=1 x1单元阵列{1 x2细胞}
noMatch =1 x1单元阵列{1 x3细胞}
访问匹配数组,索引到匹配
.
匹配{1}
ans =1 x2单元格{“猫”}{“外套”}
若要访问不匹配的子字符串,请在下索引intonoMatch
.
noMatch {1}
ans =1 x3单元格{'bat '} {' can car '} {' court CUT ct C…'}
str
- - - - - -输入文本输入文本,指定为字符向量、字符向量单元格数组或字符串数组。单元格数组中的每个字符向量或字符串数组中的每个字符串都可以是任意长度并包含任意字符。
如果str
和表达式
是字符串数组或单元格数组,它们必须具有相同的维数。
数据类型:字符串
|字符
|细胞
表达式
- - - - - -正则表达式正则表达式,指定为字符向量、字符向量的单元格数组或字符串数组。每个表达式可以包含指定要匹配的模式的字符、元字符、操作符、标记和标志str
.
下表描述了正则表达式的元素。
元字符
元字符代表字母,字母范围,数字和空格字符。使用它们来构建一个广义的字符模式。
metacharacter |
描述 |
例子 |
---|---|---|
|
任何单个字符,包括空白 |
|
|
方括号内包含的任何字符。以下字符按字面意思处理: |
|
|
方括号内不包含的任何字符。以下字符按字面意思处理: |
|
|
范围内的任何字符 |
|
|
任何字母,数字或下划线字符。对于英语字符集, |
|
|
任何非字母、数字或下划线的字符。对于英语字符集, |
|
|
任何空白字符;相当于 |
|
|
任何非空白字符;相当于 |
|
|
任何数字数字;相当于 |
|
|
任何数字字符;相当于 |
|
|
八进制值的特征 |
|
|
十六进制值的特征 |
|
字符表示
操作符 |
描述 |
---|---|
|
报警(嘟) |
|
退格 |
|
换页 |
|
新行 |
|
回车 |
|
水平选项卡 |
|
垂直制表符 |
|
任何在正则表达式中具有特殊含义的字符,您希望按字面意义匹配(例如,use |
量词
限定符指定模式在匹配文本中必须出现的次数。
量词 |
表达式发生的次数 |
例子 |
---|---|---|
|
连续0次或更多次。 |
|
|
0乘以1乘以。 |
|
|
连续1次或更多。 |
|
|
至少
|
|
|
至少
|
|
|
完全 相当于 |
|
量词可以以三种方式出现,如下表所示。问表示上表中的任何量词。
模式 |
描述 |
例子 |
---|---|---|
|
贪婪的表达:匹配尽可能多的字符。 |
考虑到文本
|
|
惰性表达式:匹配尽可能少的字符。 |
考虑到文本
|
|
所有格表达式:尽可能匹配,但不要重新扫描文本的任何部分。 |
考虑到文本 |
分组操作符
分组操作符允许您捕获令牌、将一个操作符应用于多个元素或在特定组中禁用回溯。
分组操作符 |
描述 |
例子 |
---|---|---|
|
对表达式和捕获标记的元素进行分组。 |
|
|
组,但不捕获令牌。 |
没有分组, |
|
组自动。不要在组内回溯以完成匹配,也不要捕获令牌。 |
|
|
匹配表达式 如果有匹配 您可以包括 |
|
锚
表达式中的锚与输入文本或单词的开头或结尾匹配。
锚 |
匹配…… |
例子 |
---|---|---|
|
输入文本的开头。 |
|
|
输入文本的结束。 |
|
|
单词的开头。 |
|
|
一个单词的结尾。 |
|
看看断言
环视断言查找紧跟在预期匹配之前或之后但不属于匹配部分的模式。
指针保持在当前位置,而对应于测试
表达未被捕获或丢弃。因此,看法断言可以匹配重叠的字符组。
看看断言 |
描述 |
例子 |
---|---|---|
|
向前查找匹配的字符 |
|
|
展望不匹配的字符 |
|
|
查找匹配的字符 |
|
|
查找不匹配的字符 |
|
如果指定了前向断言之前表达式,操作相当于逻辑和
.
操作 |
描述 |
例子 |
---|---|---|
|
匹配两个 |
|
|
匹配 |
|
逻辑和条件运算符
逻辑运算符和条件运算符允许您测试给定条件的状态,然后使用结果来确定下一个匹配的模式(如果有的话)。这些操作符支持逻辑的金宝app要么
,如果
或如果别的
条件。
条件可以是标记、查找操作符或表单的动态表达式(? @cmd)
.动态表达式必须返回逻辑或数字值。
条件运算符 |
描述 |
例子 |
---|---|---|
|
匹配表达式 如果有匹配 |
|
|
如果条件 |
|
|
如果条件 |
|
令牌运营商
令牌是通过将正则表达式的一部分括在括号中定义的匹配文本的一部分。您可以通过标记在文本中的顺序(序数标记)引用标记,或者为标记分配名称,以便于代码维护和输出可读。
序数牌运营商 |
描述 |
例子 |
---|---|---|
|
在标记中捕获与括起来的表达式匹配的字符。 |
|
|
匹配 |
|
|
如果 |
|
命名为令牌运营商 |
描述 |
例子 |
---|---|---|
|
在命名标记中捕获与所包含表达式匹配的字符。 |
|
|
匹配引用的令牌 |
|
|
如果找到指定的令牌,则进行匹配 |
|
请注意
如果表达式有嵌套的括号,MATLAB®捕获与最外层圆括号集对应的标记。例如,给定搜索模式'(和(y | rew))'
, MATLAB创建令牌“安德鲁”
但不是“y”
或“报答”
.
动态的正则表达式
动态表达式允许您执行MATLAB命令或正则表达式来确定要匹配的文本。
动态表达式的括号不创建捕获组。
操作符 |
描述 |
例子 |
---|---|---|
|
解析 当解析, |
|
|
执行表示的MATLAB命令 |
|
|
执行表示的MATLAB命令 |
|
在动态表达式中,使用以下运算符定义替换文本。
替换操作符 |
描述 |
---|---|
|
当前匹配的输入文本的部分 |
|
当前匹配之前的输入文本的一部分 |
|
当前匹配的输入文本的部分(使用 |
|
|
|
叫牌 |
|
当MATLAB执行命令时返回的输出, |
评论
字符 |
描述 |
例子 |
---|---|---|
(? #评论) |
在正则表达式中插入注释。当匹配输入时,注释文本被忽略。 |
|
搜索标志
搜索标志修改匹配表达式的行为。在表达式中使用搜索标志的另一种方法是传递选项
输入参数。
国旗 |
描述 |
---|---|
(? -我) |
匹配字母大小写(默认为 |
(我)? |
不匹配字母大小写(默认为 |
(?s) |
匹配点( |
(? - s) |
用非换行符的任何字符匹配模式中的点。 |
(? - m) |
匹配 |
(?) |
匹配 |
(? - x) |
在匹配时包括空格字符和注释(默认)。 |
(?X) |
匹配时忽略空格字符和注释。使用 |
标志修改的表达式可以出现在括号后面,例如
(?我)\ w *
或在括号内,用冒号与标志分开(:
),比如
(?我:\ w *)
后一种语法允许您更改较大表达式的部分行为。
数据类型:字符
|细胞
|字符串
outkey
- - - - - -关键字,指示要返回哪个输出“开始”
(默认)|“结束”
|“tokenExtents”
|“匹配”
|“令牌”
|“名字”
|“分裂”
指示要返回的输出的关键字,指定为以下字符向量之一。
输出关键字 |
返回 |
---|---|
|
所有匹配的开始索引, |
|
所有匹配的结束索引, |
|
所有标记的开始和结束索引 |
|
中匹配模式的每个子字符串的文本 |
|
每个捕获的令牌的文本 |
|
每个已命名令牌的名称和文本 |
|
的不匹配子字符串的文本 |
数据类型:字符
|字符串
选项
- - - - - -搜索选项“一次”
|“警告”
|“ignorecase”
|“emptymatch”
|“dotexceptnewline”
|'lineanchors'
|……搜索选项,指定为字符向量。选项是成对出现的:一个选项对应于默认行为,另一个选项允许覆盖默认行为。从一对中只指定一个选项。选项可以以任何顺序出现。
默认 |
覆盖 |
描述 |
---|---|---|
|
|
尽可能多地匹配表达式(默认),或者只匹配一次。 |
|
|
抑制警告(默认),或显示它们。 |
|
|
匹配字母大小写(默认),或忽略大小写。 |
|
|
忽略零长度匹配(默认)或包含它们。 |
|
|
用任何字符(默认)匹配点,或除了换行符( |
|
|
应用 |
|
|
包括匹配时的空格字符和注释(默认),或忽略它们。和 |
数据类型:字符
|字符串
出
-比赛信息关于匹配的信息,以数字、单元格、字符串或结构数组的形式返回。输出中的信息取决于您指定的值outkey
,如下所示。
输出关键字 |
输出描述 |
输出类型和尺寸 |
---|---|---|
|
匹配的起始索引 |
对于这两个 |
|
匹配结束索引 |
|
|
所有标记的开始和结束索引 |
默认情况下,当返回所有匹配项时:
当你指定 如果在特定索引处期望一个令牌 |
|
中匹配模式的每个子字符串的文本 |
默认情况下,当返回所有匹配项时:
当你指定 |
|
每个捕获的令牌的文本 |
默认情况下,当返回所有匹配项时:
当你指定 如果在特定的索引处期望一个令牌,但是没有找到,那么MATLAB将为该令牌返回一个空值, |
|
每个已命名令牌的名称和文本 |
对于所有比赛:
|
|
的不匹配子字符串的文本 |
对于所有比赛:
|
令牌是匹配文本的一部分,对应于正则表达式的一部分。要创建标记,请将正则表达式的一部分括在括号中。
例如,该表达式查找表单的日期dd-mmm-yyyy
,包括日、月、年的代币。
str =“这里是日期:2020年4月01日”;表达=”(\ d +) - (\ w +) (\ d +) ';替换= regexp (str,表达式,“令牌”);替换{:}
ans = 1×3 cell array {'01'} {'Apr'} {'2020'}
您可以将名称与令牌关联起来,以便更容易识别它们:
str =“这里是日期:2020年4月01日”;表达=“(? <天> \ d +) -(? <月> \ w +) -(? <年> \ d +) ';替换= regexp (str,表达式,“名字”)
MyDate = struct and fields:日:'01'月:'4月'年:'2020'
有关更多信息,请参见正则表达式中的令牌.
MATLAB从左到右解析每个输入字符向量或字符串,试图将字符向量或字符串中的文本与正则表达式的第一个元素匹配。在此过程中,MATLAB会跳过任何不匹配的文本。
当MATLAB找到第一个匹配项时,它将继续解析以匹配表达式的第二部分,以此类推。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。