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