匹配正则表达式(区分大小写)
返回的每个子字符串的起始索引startIndex.
= regexp (str
那表达式
)str
匹配正则表达式指定的字符模式。如果没有匹配,startIndex.
为空数组。
[
返回所有匹配项的开始索引和结束索引。startIndex.
那endIndex.
]=regexp(str
那表达式
)
___= regexp (___,“forceCellOutput”)
将每个输出参数返回为标量单元格。单元格包含描述为先前语法的输出的数字阵列或子字符串。您可以包含任何输入,并请求前面语法的任何输出。
查找以开头的单词C
,结束T.
,并在它们之间包含一个或多个元音。
str ='蝙蝠猫可以剪切CT Cat-Scan'; 表情='c [aeiou] + t';StartIndex = Regexp(str,表达)
startIndex=1×25 17
正则表达式'c [aeiou] + 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 =1x2细胞{'Regexp'} {'放松'}
正则表达式“\w*x\w*”
指定字符向量:
以任意数量的字母数字或下划线字符开头,\ w *
。
包含小写字母X
。
以任意数量的字母数字或下划线字符结尾X
,包括没有,如图所示\ w *
。
将字符向量分成多个子字符串,其中每个子字符串由a分隔^
特点。
str = ['拆分^本文进入^几块'];表达='\ ^';splitstr = regexp(str,表达式,'分裂')
splitstr =.1x3细胞{'Split'}{'将此文本分成'}{'几个部分'}
因为插图符号在正则表达式中具有特殊含义,因此在逃生字符之前,反斜杠(\
)。要在其他分隔符处拆分字符向量,例如分号,则无需包含反斜杠。
属性捕获匹配正则表达式的字符向量部分'比赛'
关键字,以及使用不匹配的剩余部分'分裂'
关键词。
str =“她在海边卖海贝壳。”; 表情=“[Ss] h。”;(匹配,noMatch) = regexp (str,表达式,'比赛'那'分裂')
比赛=1x3细胞‘她’‘她’{}{}{“商店”}
nomatch =.1 x4单元格{0x0 char} {'卖海'} {'lls by sea'} {'Re。'}
正则表达式“[Ss] h。”
指定:
S.
或S.
是第一个字。
H
是第二个字符。
第三个字符可以是任何字符,包括空格,如点(。
)。
当字符向量中的第一个(或最后一个)字符与正则表达式匹配时,第一个(或最后一个)返回值'分裂'
关键字是空字符向量。
可选地,重新组装从子串的原始字符向量。
contactstr = strjoin(Nomatch,match)
combinedStr=“她在海边卖贝壳。”
通过在正则表达式中定义令牌来查找HTML标记的名称。令牌用括号表示,()
。
str =“我的标题 这是一些文字。
”; 表情=' < (\ w +).*>.*\ 1 > ';(令牌,匹配)= regexp (str,表达式,'令牌'那'比赛');
正则表达式<(\ w +)。*>。* \ 1>
指定此模式:
<(\ w +)
找到一个打开角度括号,后跟一个或多个字母数字或下划线字符。封闭\ w +
在括号中捕获令牌中的HTML标记的名称。
.*>
查找任意数量的附加字符,如HTML属性和右尖括号。
\ 1>
找到与第一个令牌相对应的结束标记(所示1
)。结束标签具有表单 tagname>
。
查看令牌和匹配的子串。
celldisp(令牌)
令牌{1} {1} =标题令牌{2} {1} = p
CellDisp(匹配)
匹配{1}=我的标题 匹配{2}=这里是一些文本
在这些形式中,可以在第一天或月份出现的日期: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,表达式,'名字');
正则表达式指定了这个模式:
(?
查找一个或多个数字数字,并将结果分配给名称指示的令牌。
|是逻辑或
操作员表示日期有两种可能的模式。在第一个模式中,斜线(/
)分开令牌。在第二种模式中,连字符(-
)分开令牌。
查看命名令牌。
为了k = 1:长度(tokennames)disp(tokennames(k))结尾
月:'01'日:'11'年:'2000'月:'02'日:'20'年:'2020'月:'03'日:'03'日:'30'年:'2000'月:'04'日:'16'年:'2020'
查找单词的大写和小写实例。
默认情况下,regexp.
执行区分大小写的匹配。
str ='字符矢量与大写和小写文本。'; 表情=“\ w *案”;matchstr = regexp(str,表达式,'比赛')
matchStr =1x1细胞阵列{'lowercase'}
正则表达式指定字符向量:
以任意数量的字母数字或下划线字符开头,\ w *
。
以文字文本结束案件
。
这regexpi.
函数使用相同的语法regexp.
,但执行不区分大小写的匹配。
matchwithregexpi = regexpi(str,表达式,'比赛')
matchwithregexpi =.1x2细胞{'大写小写'}
或者,禁用区分大小写的匹配regexp.
使用“ignorecase”
选项。
matchwithignorecase = regexp(str,表达式,'比赛'那“ignorecase”)
matchwithignorecase =1x2细胞{'大写小写'}
对于多个表达式,请使用(?一世)
搜索标志。
表达式={“(? -我)\ w *案”;...'(?i)\ w *案例'}; matchStr=regexp(str,表达式,'比赛');CellDisp(匹配)
matchstr {1} {1} =小写匹配{2} {1} =大写匹配{2} {2} =小写
创建包含换行符的字符向量,\ n
,并使用正则表达式解析它。自从regexp.
回报匹配
作为包含有多行文本的单元格数组,可以将文本从单元格数组中取出以显示所有行。
str = sprintf(“abc \ n de”);表达='。*';matchstr = regexp(str,表达式,'比赛');matchStr {:}
ans ='abc de'
默认情况下,点(。
)匹配每个字符,包括换行符,并返回一个等同于原始字符向量的匹配。
使用匹配中的换行符排除'dotexcepnewline'
选项。这返回每行文本的单独匹配。
matchStrNoNewline = regexp (str,表达式,'比赛'那'dotexcepnewline')
matchstrnonewline =1x2细胞{'abc'} {'de'}
属性查找每一行的第一个或最后一个字符^
或$
元字符,“线人”
选项。
表达='。$'; lastInLine=regexp(str,表达式,'比赛'那“线人”)
lastInLine =1x2细胞{' c '}{“e”}
在一段文本中查找匹配项并将输出返回标量单元格。
查找以C开头的单词,以t结尾,并包含它们之间的一个或多个元音。将起始索引返回标量单元格中。
str ='蝙蝠猫可以剪切CT Cat-Scan'; 表情='c [aeiou] + t';startIndex = Regexp(str,表达式,“forceCellOutput”)
startIndex=1x1细胞阵列{1x2 double}
要将起始索引作为数字数组访问,请索引到单元格中。
startIndex {1}
ans =.1×25 17
返回匹配和非匹配子串。每个输出都在其自己的标量单元中。
(匹配,noMatch) = regexp (str,表达式,'比赛'那'分裂'那“forceCellOutput”)
比赛=1x1细胞阵列{1x2 cell}
nomatch =.1x1细胞阵列{1x3 cell}
要访问匹配项数组,请将其索引到比赛
。
匹配{1}
ans =.1x2细胞{'cat'} {'coat'}
要访问与不匹配的子字符串,索引义务
。
nomatch {1}
ans =.1x3细胞{'bat '} {' can car '} {' court CUT ct C…'}
str
-输入文本输入文本,指定为字符向量,字符向量的小区数组或字符串数组。单元格数组中的每个字符向量,或字符串阵列中的每个字符串都可以是任何长度并包含任何字符。
如果str
和表达式
是字符串数组或单元格数组,它们必须具有相同的维数。
数据类型:细绳
|char
|细胞
表达式
-正则表达式正则表达式,指定为字符向量、字符向量的单元格数组或字符串数组。每个表达式可以包含指定要匹配的模式的字符、元字符、操作符、标记和标志str
。
下表描述了正则表达式的元素。
元字符
元字符表示字母、字母范围、数字和空格字符。使用它们来构建一个通用的字符模式。
元字符 |
描述 |
例子 |
---|---|---|
|
任何单个字符,包括空白 |
|
|
方括号内包含的任何字符。以下字符按字面意思处理: |
|
|
方括号内未包含的任何字符。以下字符按字面意思处理: |
|
|
范围内的任何角色 |
|
|
任何字母、数字或下划线字符。对于英文字符集, |
|
|
任何不是字母,数字或下划线的字符。对于英语字符集, |
|
|
任何空白字符;相当于 |
|
|
任何非空白字符;相当于 |
|
|
任何数字;相当于 |
|
|
任何非原因的性格;相当于 |
|
|
八万价值的特征 |
|
|
十六进制价值的特征 |
|
字符表示
操作员 |
描述 |
---|---|
|
警报(哔哔) |
|
背板 |
|
表格饲料 |
|
新队 |
|
回车 |
|
水平标签 |
|
垂直标签 |
|
任何具有特殊含义的字符,在详细信息中,您想要匹配的正则表达式(例如,使用 |
量词
量词指定模式必须在匹配文本中发生的次数。
量词 |
发生的次数 |
例子 |
---|---|---|
|
连续0或更多次。 |
|
|
0次或1次。 |
|
|
连续1次或更多次。 |
|
|
至少
|
|
|
至少
|
|
|
确切地 相当于 |
|
量化器可以出现在下表中描述的三种模式。问:表示上一表中的任何量词。
模式 |
描述 |
例子 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
贪婪表达式:匹配尽可能多的字符。 |
鉴于文本 文本 p> td>', 表达方式 文本 p> td>'
懒惰的表达:必要时匹配很少的字符。 鉴于文本 文本 p> td>', 表达方式 所有格表达式:尽可能匹配,但不要重新扫描文本的任何部分。 鉴于文本 文本 p> td>', 表达方式 |
分组运营商
分组运算符允许您捕获令牌,将一个运算符应用于多个元素,或在特定组中禁用回溯。
分组运营商 |
描述 |
例子 |
---|---|---|
|
表达式和捕获令牌的组元素。 |
|
|
组,但不捕获令牌。 |
不分组,, |
|
组原子。不要在组内背包以完成匹配,并不会捕获令牌。 |
|
|
匹配表达式 如果有匹配 你可以包括 |
|
锚
表达式中的锚匹配输入文本或单词的开头或结尾。
锚 |
匹配...... |
例子 |
---|---|---|
|
输入文本的开头。 |
|
|
输入文本的结尾。 |
|
|
单词的开头。 |
|
|
一个词的结尾。 |
|
PookAround断言
LookAround断言查找立即在预期匹配之前立即或遵循预期匹配的模式,但不是匹配的一部分。
指针仍然存在于当前位置,并且与对应的字符测试
表达式不会被捕获或丢弃。因此,前瞻断言可以匹配重叠的字符组。
PookAround断言 |
描述 |
例子 |
---|---|---|
|
向前查找匹配的字符 |
|
|
提前查找不匹配的字符 |
|
|
看起来搭配匹配的人物 |
|
|
看起来不匹配的人物 |
|
如果您指定了一个看法断言前一个表达式,该操作等价于一个逻辑和
。
手术 |
描述 |
例子 |
---|---|---|
|
匹配两者 |
|
|
匹配 |
|
逻辑和有条件的运营商
逻辑运算符和条件运算符允许您测试给定条件的状态,然后使用结果来确定下一个匹配的模式(如果有的话)。这些操作符支持逻辑的金宝app或
,如果
或如果/否则
状况。
条件可以是令牌,loesArweround运算符或表格的动态表达式(?@cmd)
。动态表达式必须返回逻辑或数值。
条件运营商 |
描述 |
例子 |
---|---|---|
|
匹配表达式 如果有匹配 |
|
|
如果条件 |
|
|
如果条件 |
|
令牌运营商
令牌是匹配文本的部分,它通过括在括号中的正则表达式的部分来定义。您可以在文本(序数令牌)中的序列中引用令牌,或者为更容易的代码维护和可读输出分配令牌的名称。
序号令牌运营商 |
描述 |
例子 |
---|---|---|
|
在令牌中捕获符合随附表达式的字符。 |
|
|
匹配 |
|
|
如果是 |
|
命名令牌运算符 |
描述 |
例子 |
---|---|---|
|
捕获命名令牌符合随附表达式的字符。 |
|
|
匹配引用的令牌 |
|
|
如果找到命名令牌,则匹配 |
|
笔记
如果表达式已嵌套括号,MATLAB®捕获与括号集合的令牌相对应。例如,给定搜索模式"(和(y | rew)"
,Matlab创造了一个令牌'安德鲁'
但不是'是'
或'rew'
。
动态正则表达式
动态表达式允许您执行MATLAB命令或正则表达式以确定要匹配的文本。
动态表达式的括号不是创建捕获组。
操作员 |
描述 |
例子 |
---|---|---|
|
解析 解析后, |
|
|
执行由此表示的matlab命令 |
|
|
执行由此表示的matlab命令 |
|
在动态表达式中,使用以下运算符定义替换文本。
替换运营商 |
描述 |
---|---|
|
当前匹配的输入文本部分 |
|
在当前匹配之前的输入文本的部分 |
|
当前匹配后的输入文本部分(使用 |
|
|
|
命名为令牌 |
|
MATLAB执行命令时返回的输出, |
评论
人物 |
描述 |
例子 |
---|---|---|
(?#评论) |
在正则表达式中插入注释。匹配输入时忽略注释文本。 |
|
搜索标志
搜索标志修改匹配表达式的行为。在表达式中使用搜索标志的替代方法是通过选项
输入参数。
旗帜 |
描述 |
---|---|
(?-一世) |
匹配信箱(默认为 |
(?一世) |
不匹配信箱(默认为 |
(?s) |
匹配点( |
(?-s) |
使用非换行符的任何字符匹配模式中的点。 |
(?-m) |
匹配 |
(?m) |
匹配 |
(? - x) |
包括匹配时的空格字符和注释(默认值)。 |
(?x) |
匹配时忽略空格字符和注释。使用 |
标志修改的表达式可以出现在括号后面,例如
(?i)\ w *
或者在括号内,与冒号(:
), 如
(?我:\ w *)
后一句话允许您更改一部分更大表达式的行为。
数据类型:char
|细胞
|细绳
外卖
-指示要返回的输出的关键字'开始'
(默认)|'结尾'
|'tokenextents'
|'比赛'
|'令牌'
|'名字'
|'分裂'
指示要返回的输出的关键字,指定为以下字符向量之一。
输出关键字 |
返回 |
---|---|
|
所有比赛的起始指数, |
|
所有比赛的结束指数, |
|
所有令牌的启动和结束指数 |
|
每个子字符串的文本与模式匹配 |
|
中每个捕获令牌的文本 |
|
每个命名令牌的名称和文本 |
|
非匹配子串的文本 |
数据类型:char
|细绳
选项
-搜索选项'一次'
|“警告”
|“ignorecase”
|“emptymatch”
|'dotexcepnewline'
|“线人”
|……搜索选项,指定为字符向量。选项成对出现:一个对应于默认行为的选项,以及一个允许您覆盖默认值的选项。仅从一对中指定一个选项。选项可以以任何顺序出现。
违约 |
覆盖 |
描述 |
---|---|---|
|
|
匹配尽可能多的表达式(默认),或仅匹配一次。 |
|
|
抑制警告(默认),或显示它们。 |
|
|
匹配字母案例(默认)或忽略案例。 |
|
|
忽略零长度匹配(默认),或包含它们。 |
|
|
用任何字符(默认)匹配点,或除了换行符( |
|
|
申请 |
|
|
匹配时包含空格字符和注释(默认),或忽略它们。具有 |
数据类型:char
|细绳
出去
- 有关匹配的信息关于匹配的信息,以数字、单元格、字符串或结构数组的形式返回。输出中的信息取决于您指定的值外卖
, 如下。
输出关键字 |
输出描述 |
输出类型和尺寸 |
---|---|---|
|
起价的起始指数 |
对彼此而言 |
|
结束匹配指数 |
|
|
所有令牌的启动和结束指数 |
默认情况下,返回所有匹配项时:
当您指定时 如果在特定索引处预期令牌 |
|
每个子字符串的文本与模式匹配 |
默认情况下,返回所有匹配项时:
当您指定时 |
|
中每个捕获令牌的文本 |
默认情况下,返回所有匹配项时:
当您指定时 如果在特定索引处预期令牌,但找不到,则Matlab返回令牌的空值, |
|
每个命名令牌的名称和文本 |
对于所有比赛:
|
|
非匹配子串的文本 |
对于所有比赛:
|
令牌是与正则表达式的部分对应的匹配文本的部分。要创建令牌,请括在括号中的一部分正则表达式。
例如,此表达式查找表单的日期dd-mmm-yyyy
,包括当天,月和年份的令牌。
str =“这是日期:01-APR-2020'; 表情='(\ d +) - (\ w +) - (\ d +)';MyDate = Regexp(str,表达,'令牌');我的约会{:}
ans = 1×3 cell array {'01'} {'Apr'} {'2020'}
您可以将名称与令牌相关联,以便更容易识别:
str =“这是日期:01-APR-2020'; 表情='(?\ d +) - (?<月> \ w +) - (?<年> \ d +)' ;MyDate = Regexp(str,表达,'名字')
mydate=struct,带字段:day:'01'月:'Apr'年:'2020'
有关更多信息,请参阅正则表达式的令牌。
MATLAB将每个输入字符向量或字符串解析为右侧,尝试将字符向量或字符串中的文本与正则表达式的第一个元素匹配。在此过程中,Matlab跳过任何不匹配的文本。
当Matlab找到第一个匹配时,它继续解析以匹配第二件表达式,等等。
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。