文档

正则表达式

匹配正则表达式(区分大小写)

语法

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是一个空数组。

startIndexendIndex= regexp(str表达式返回所有匹配的开始和结束索引。

例子

= regexp (str表达式outkey返回指定的输出outkey.例如,如果outkey“匹配”,然后正则表达式返回匹配表达式的子字符串,而不是它们的起始索引。

例子

1、……N] = regexp(str表达式outkey1、……outkeyN)按指定顺序返回多个输出关键字指定的输出。例如,如果您指定“匹配”“令牌”,然后正则表达式返回与整个表达式和匹配的子字符串令牌匹配表达式的部分。

例子

___= regexp (___选项1、……选项米)使用指定的选项标志修改搜索。例如,指定“ignorecase”执行不区分大小写的匹配。您可以包含任何输入,并从以前的语法请求任何输出。

例子

___= 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 +).*>.* ';[符号,匹配]= regexp(str,表达式,“令牌”“匹配”);

正则表达式< (\ w +).*>.*指定这个模式:

  • < (\ w +)查找一个或多个字母数字或下划线字符后的开始尖括号。封闭\ w +在括号中捕获标记中HTML标记的名称。

  • * >。查找任意数量的附加字符,例如HTML属性和右尖括号。

  • < / \ 1 >找到与第一个标记对应的结束标记(由\ 1).结束标记具有表单< / tagname >

查看令牌和匹配的子字符串。

celldisp(令牌)
令牌{1}{1}=标题令牌{2}{1}= p
celldisp(匹配)
matches{1} = My title 




 matches{2} = 

这里有一些文本

解析可以先以日或月出现的日期,格式如下:mm / dd / yyyydd-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

下表描述了正则表达式的元素。

元字符

元字符表示字母、字母范围、数字和空格字符。用它们来构造一个一般的字符模式。

元字符

描述

例子

任何单个字符,包括空白

“……是”匹配以。结尾的连续五个字符的序列“是”

[c1c2c3.

方括号内的任何字符。以下字符按字面意思处理:$ |。* + ?而且-不用于表示范围时。

“(rp)是”匹配“雨”“痛苦”“.ain”

[c ^1c2c3.

任何不包含在方括号内的字符。以下字符按字面意思处理:$ |。* + ?而且-不用于表示范围时。

“[^ * rp]还”匹配所有以。结尾的四字母序列“是”,除了“雨”而且“痛苦”而且‘*是‘.例如,它匹配“获得”“躺”,或“虚空”

[c1- c2

范围内的任何字符c1通过c2

“[g]”匹配范围内的单个字符一个通过G

\ w

任何字母、数字或下划线字符。对于英文字符集,\ w等于(a-zA-Z_0-9)

“\ w *”识别一个单词。

\ W

不是字母、数字或下划线的任何字符。对于英文字符集,\ W等于[^ a-zA-Z_0-9]

“\ W *”标识一个不是单词的术语。

\ s

任何空白字符;相当于[v \ f t \ n \ r \ \]

' \ w * n \ s '匹配以字母结尾的单词ngydF4y2Ba,后面跟着一个空白字符。

\ S

任何非空白字符;相当于[^ \ v f t \ n \ r \ \]

' \ d \ S '匹配后跟任何非空白字符的数字。

\ d

任何数字;相当于[0 - 9]

“\ d *”匹配任意个数的连续数字。

\ D

任何非数字字符;相当于(^ 0 - 9)

“\ w * \ D \ >”匹配不以数字结尾的单词。

上的\阿\ {N}

八进制值的字符N

“\ o{40}”匹配由八进制定义的空格字符40

\ xNx \ {N}

十六进制值的字符N

“\ x2C”匹配由十六进制定义的逗号字符2摄氏度

字符表示

操作符

描述

、一个

报警(嘟)

\ b

退格

\ f

换页

\ n

新行

r \

回车

\ t

水平选项卡

v \

垂直制表符

字符

正则表达式中任何具有特殊含义的字符,您希望从字面上匹配(例如,使用\ \匹配一个反斜杠)

量词

量词指定模式必须在匹配文本中出现的次数。

量词

当它发生时匹配表达式…

例子

expr *

连续0次或多次。

“\ w *”匹配任意长度的单词。

expr吗?

0次或1次。

“\ w * (\ . m) ?”匹配可选地以扩展名结尾的单词.米

expr +

连续1次或以上。

' < img src = " \ w + \ . gif”>“匹配一个< img >当文件名包含一个或多个字符时,使用HTML标记。

expr {m, n}

至少倍,但不超过ngydF4y2Ba*连续。

{0,1}等于?

\年代{4 8}匹配4到8个非空白字符。

expr {m,}

至少*连续。

{0}而且{1,}都相当于而且+,分别。

' < a href = " {1,} \ \ w . html”>“匹配一个<一>当文件名包含一个或多个字符时,使用HTML标记。

expr {n}

完全ngydF4y2Ba*连续。

相当于{n, n}

“\ d{4}”匹配4位连续数字。

量词可以以三种模式出现,如下表所示。表示上表中的任何量词。

' '' '

模式

描述

例子

expr

贪心表达式:匹配尽可能多的字符。

给定文本' < tr > < td > < p >文本< / p > < / td >”,表达式“* > < / ? t。”匹配所有字符< tr而且/ td >

' < tr > < td > < p >文本< / p > < / td >”

expr?

惰性表达式:匹配尽可能少的字符。

给定文本' < tr > < td > < p >文本< / p > < / td >”,表达式' < / t。* ?>”在右尖括号第一次出现时结束每场匹配(>):

'
' '

expr+

所有格表达式:尽可能匹配,但不重新扫描文本的任何部分。

给定文本' < tr > < td > < p >文本< / p > < / td >”,表达式“* + > < / ? t。”不返回任何匹配,因为右尖括号捕获使用.*,不会重新扫描。

分组操作符

分组操作符允许您捕获令牌,将一个操作符应用到多个元素,或禁用特定组中的回溯。

分组操作符

描述

例子

(expr)

对表达式元素和捕获令牌进行分组。

“乔? n \年代(\ w *)捕获一个标记,该标记包含任何具有名字的人的姓约翰乔恩

(?: expr)

组,但不捕获令牌。

”(?:[五个母音字母][^五个母音字母)){2}”匹配元音后面跟着非元音的两个连续模式,例如“立刻”

没有分组,“[五个母音字母][^五个母音字母){2}”匹配一个元音后跟两个非元音。

(? > expr)

组自动。不要在组内回溯以完成匹配,也不要捕获令牌。

“(? >。*)Z”不匹配“AtoZ”,虽然“Z(?: *)。”所做的事。使用原子团,Z使用.*并且不会重新扫描。

(expr1 | expr2)

匹配表达式expr1或表达expr2

如果有匹配expr1,然后expr2将被忽略。

你可以包括?:? >在开括号之后,以抑制标记或原子地分组。

“(让|电话)\ w +”匹配以开头的单词电话

表达式中的锚匹配输入文本或单词的开头或结尾。

匹配……

例子

^ expr

输入文本的开头。

“^ M \ w *”匹配以开头的单词在文章的开头。

expr美元

输入文本结束。

“\ w * m美元”匹配以在文章的最后。

\ < expr

一个单词的开头。

“\ < n \ w *”匹配任何以开头的单词ngydF4y2Ba

expr \ >

一个词的结尾。

“\ w * e \ >”匹配以。结尾的任何单词e

看看断言

环视断言查找紧接在预期匹配之前或之后的模式,但不是匹配的一部分。

指针保持在当前位置,与之对应的字符测验表达式不会被捕获或丢弃。因此,前向断言可以匹配重叠的字符组。

看看断言

描述

例子

expr(? =测试)

提前寻找匹配的角色测验

“\ w * (? = ing)”匹配后面的项荷兰国际集团(ing),例如“飞”而且“秋天”在输入文本中“是飞,不是坠落。”

expr(? !测试)

提前寻找不匹配的字符测验

“我(? ! ng)”匹配字母的实例后面没有ng

(? < = expr测试)

在后面寻找匹配的字符测验

(? < = re) \ w *’匹配后面的术语“重新”,例如“新”“使用”,“循环”在输入文本中“更新、再利用、再循环”

(? < !测试)expr

寻找不匹配的字符测验

“(? < ! \ d) (\ d) (? ! \ d)”匹配个位数(不在其他数字前面或后面的数字)。

如果指定了超前断言之前一个表达式,其操作相当于一个逻辑

操作

描述

例子

(? =测试)expr

匹配两个测验而且expr

(? = [a - z])[^五个母音字母)”辅音相匹配。

(? !测试)expr

匹配expr不匹配测验

”(? ![五个母音字母])[a - z]”辅音相匹配。

逻辑和条件运算符

逻辑和条件操作符允许您测试给定条件的状态,然后使用结果确定下一个匹配的模式(如果有的话)。这些操作符支持逻辑万博1manbetx,如果如果/其他条件。

条件可以是令牌、查找操作符或表单的动态表达式(? @cmd).动态表达式必须返回逻辑值或数值。

条件运算符

描述

例子

expr1 | expr2

匹配表达式expr1或表达expr2

如果有匹配expr1,然后expr2将被忽略。

“(让|电话)\ w +”匹配以开头的单词电话

(?(电导率)expr)

如果条件气孔导度真正的,然后匹配expr

”(? ? @ispc) [a - z]: \ \)”匹配驱动器名称,例如C: \,在Windows上运行时®系统。

(?(电导率)expr1 | expr2)

如果条件气孔导度真正的,然后匹配expr1.否则,匹配expr2

先生(年代 ?)\..*?(?( 1)她|他)\ w *’匹配包含她的当文本开始时夫人,或包括他的当文本开始时先生

令牌运营商

令牌是通过将部分正则表达式括在括号中定义的匹配文本的一部分。您可以通过文本中的序列(序数标记)引用标记,或者为标记分配名称,以便于代码维护和可读输出。

序号令牌运算符

描述

例子

(expr)

在标记中捕获与所包含表达式匹配的字符。

“乔? n \年代(\ w *)捕获一个标记,该标记包含任何具有名字的人的姓约翰乔恩

\ N

匹配N令牌。

' < (\ w +).*>.* '捕获HTML标记的标记,例如“标题”从文本中' <标题>一些文本< /名称>”

(? (N) expr1 | expr2)

如果N找到令牌,然后进行匹配expr1.否则,匹配expr2

先生(年代 ?)\..*?(?( 1)她|他)\ w *’匹配包含她的当文本开始时夫人,或包括他的当文本开始时先生

命名令牌运算符

描述

例子

(? <名称> expr)

在命名标记中捕获与括起来的表达式匹配的字符。

‘(? <月> \ d +) -(? <天> \ d +) -(? <年> \ d +)”在表单的输入日期中为月、日和年创建命名令牌mm-dd-yy

\ k <名称>

所引用的令牌匹配的名字

' <(? <标记> \ w +).*>.* >”捕获HTML标记的标记,例如“标题”从文本中' <标题>一些文本< /名称>”

(?(名字)expr1 | expr2)

如果找到命名令牌,则进行匹配expr1.否则,匹配expr2

先生(? <性>年代 ?)\..*?(?( 性)她|他)\ w *’匹配包含她的当文本开始时夫人,或包括他的当文本开始时先生

请注意

如果表达式有嵌套括号,MATLAB®捕获与最外层的圆括号集对应的标记。例如,给定搜索模式”(和(y |奖赏))”, MATLAB创建一个令牌“安德鲁”但不是为了“y”“报答”

动态正则表达式

动态表达式允许您执行MATLAB命令或正则表达式来确定要匹配的文本。

包含动态表达式的括号可以创建捕获组。

操作符

描述

例子

(? ? expr)

解析expr并将结果项包含在匹配表达式中。

当解析,expr必须对应于一个完整、有效的正则表达式。使用反斜杠转义字符()需要两个反斜杠:一个用于初始解析expr,一个是完全匹配的。

' ^ (\ d +) ((? ? \ \ w美元{1}))”通过在匹配开始处读取数字来确定要匹配多少个字符。动态表达式包含在第二组圆括号中,以便在令牌中捕获结果匹配。例如,匹配“5 xxxxx”捕获令牌“5”而且“XXXXX”

(? ? @cmd)

执行代表的MATLAB命令cmd,并将命令返回的输出包含在匹配表达式中。

”({2})。? (? ? @fliplr(1美元))”查找至少有四个字符长的回文,例如“神父”

(? @cmd)

执行代表的MATLAB命令cmd,但丢弃命令返回的任何输出。(有助于诊断正则表达式。)

‘\ w * ? (\ w) (? @disp(1美元))\ 1 \ w *’匹配包含双字母的单词(例如),并显示中间结果。

在动态表达式中,使用以下操作符定义替换文本。

替换操作符

描述

$ &0美元

当前匹配的输入文本的一部分

美元的

当前匹配之前的输入文本的一部分

美元的

当前匹配后的部分输入文本(使用$ "代表美元的

$ N

Nth令牌

$ <名称>

叫牌

$ {cmd}

当MATLAB执行命令时返回的输出,cmd

评论

字符

描述

例子

(? #评论)

在正则表达式中插入注释。在匹配输入时,注释文本将被忽略。

‘(?#Initial digit)\<\d\w+'包含注释,并匹配以数字开头的单词。

搜索的旗帜

搜索标志修改匹配表达式的行为。在表达式中使用搜索标志的另一种替代方法是传递选项输入参数。

国旗

描述

(? -我)

匹配字母大小写(默认为正则表达式而且regexprep).

(我)?

不匹配字母大小写(默认为regexpi).

(?)

匹配点()在模式中使用任何字符(默认)。

(? - s)

将模式中的dot与任何非换行符的字符匹配。

(? - m)

匹配而且文本开头和结尾的元字符(默认值)。

(?)

匹配而且行首和行尾的元字符。

(? - x)

匹配时包括空格字符和注释(默认)。

x (?)

匹配时忽略空格字符和注释。使用“\”而且“\ #”为了匹配空间和字符。

该标志修改的表达式可以出现在括号之后,例如

(?我)\ w *

或者在括号内,用冒号与标志分隔开(),例如

(?我:\ w *)

后一种语法允许您更改较大表达式部分的行为。

数据类型:字符|细胞|字符串

关键字,指示要返回哪个输出,指定为以下字符向量之一。

输出关键字

返回

“开始”(默认)

所有匹配的起始索引,startIndex

“结束”

所有匹配的结束索引,endIndex

“tokenExtents”

所有标记的开始和结束索引

“匹配”

中与模式匹配的每个子字符串的文本表达式

“令牌”

中的每个捕获令牌的文本str

“名字”

每个命名令牌的名称和文本

“分裂”

的不匹配子字符串的文本str

数据类型:字符|字符串

搜索选项,指定为字符向量。选项是成对出现的:一个选项对应默认行为,另一个选项允许您重写默认行为。在一对中只指定一个选项。选项可以以任何顺序出现。

默认的

覆盖

描述

“所有”

“一次”

尽可能多地匹配表达式(默认),或者只匹配一次。

“nowarnings”

“警告”

禁止警告(默认),或显示警告。

“matchcase”

“ignorecase”

匹配字母大小写(默认),或忽略大小写。

“noemptymatch”

“emptymatch”

忽略零长度匹配(默认),或者包含它们。

“dotall”

“dotexceptnewline”

将点与任何字符匹配(默认),或除换行符(\ n).

“stringanchors”

“lineanchors”

应用而且元字符到字符向量的开始和结束(默认值),或者到一行的开始和结束。

“literalspacing”

“freespace”

匹配时包括空格字符和注释(默认),或忽略它们。与空闲空间,使用“\”而且“\ #”为了匹配空间和字符。

数据类型:字符|字符串

输出参数

全部折叠

每个匹配的起始索引,作为行向量或单元格数组返回,如下所示:

  • 如果str而且表达式都是字符向量或字符串标量,则输出为行向量(或者,如果没有匹配,则为空数组)。

  • 如果任何一str表达式一个是单元格数组的字符向量或字符串数组,另一个是字符向量或字符串标量,输出的是单元格数组的行向量。输出单元格数组与输入数组具有相同的维数。

  • 如果str而且表达式都是单元格数组或字符串数组,它们必须具有相同的维数。输出是具有相同尺寸的单元格数组。

每个匹配的结束索引,作为行向量或单元格数组返回,如下所示:

  • 如果str而且表达式都是字符向量或字符串标量,则输出为行向量(或者,如果没有匹配,则为空数组)。

  • 如果任何一str表达式一个是单元格数组的字符向量或字符串数组,另一个是字符向量或字符串标量,输出的是单元格数组的行向量。输出单元格数组与输入数组具有相同的维数。

  • 如果str而且表达式都是单元格数组或字符串数组,它们必须具有相同的维数。输出是具有相同尺寸的单元格数组。

有关匹配的信息,以数字、单元格、字符串或结构数组的形式返回。输出中的信息取决于您指定的值outkey,如下。

输出关键字

输出描述

输出类型及尺寸

“开始”

比赛起始索引

对于这两个“开始”而且“结束”

  • 如果str而且表达式都是字符向量或字符串标量,则输出为行向量(或者,如果没有匹配,则为空数组)。

  • 如果任何一str表达式一个是单元格数组的字符向量或字符串数组,另一个是字符向量或字符串标量,输出的是单元格数组的行向量。输出单元格数组与输入数组具有相同的维数。

  • 如果str而且表达式都是单元格数组或字符串数组,它们必须具有相同的维数。输出是具有相同尺寸的单元格数组。

“结束”

匹配的结束索引

“tokenExtents”

所有标记的开始和结束索引

默认情况下,当返回所有匹配时:

  • 如果str而且表达式都是字符向量或字符串标量,输出是1 ×ngydF4y2Ba单元格数组,其中ngydF4y2Ba是匹配的数量。每个单元格包含一个-by-2数值数组的索引,其中匹配中的令牌数。

  • 如果任何一str表达式是字符向量或字符串数组的单元格数组,则输出是与输入数组具有相同维度的单元格数组。每个单元格包含一个1 × -ngydF4y2Ba单元格数组,其中每个内部单元格包含-by-2数值数组。

  • 如果str而且表达式都是单元格数组或字符串数组,它们必须具有相同的维数。输出是具有相同尺寸的单元格数组。

当您指定“一次”选项只返回一个匹配项,则输出为-by-2数值数组或单元格数组,具有相同的尺寸str和/或表达式

是否期望在特定索引处使用令牌N,但未找到,则MATLAB返回该令牌的区段(N, N - 1)

“匹配”

中与模式匹配的每个子字符串的文本表达式

默认情况下,当返回所有匹配时:

  • 如果str而且表达式都是字符向量或字符串标量,输出是1 ×ngydF4y2Ba数组,ngydF4y2Ba是匹配的数量。

    如果str是字符向量,则输出是字符向量的单元格数组。如果str为字符串标量,则输出为字符串数组。

  • 如果任何一str表达式是字符向量或字符串数组的单元格数组,则输出是与输入数组具有相同维度的单元格数组。

    如果str是字符向量的单元格数组,则输出也是。如果str为字符串数组,则输出为单元格数组,其中每个单元格包含一个字符串数组。

  • 如果str而且表达式都是单元格数组或字符串数组,它们必须具有相同的维数。输出是具有相同尺寸的单元格数组。

    如果str是字符向量的单元格数组,则输出也是。如果str为字符串数组,则输出为单元格数组,其中每个单元格包含一个字符串数组。

当您指定“一次”选项仅返回一个匹配项,则输出为字符向量、字符串数组或具有相同尺寸的单元格数组str而且表达式

“令牌”

中的每个捕获令牌的文本str

默认情况下,当返回所有匹配时:

  • 如果str而且表达式都是字符向量或字符串标量,输出是1 ×ngydF4y2Ba单元格数组,其中ngydF4y2Ba是匹配的数量。每个单元格包含一个1 × -匹配单元格数组,其中匹配中的令牌数。

    如果str是字符向量,则输出是字符向量的单元格数组。如果str为字符串数组,则输出为单元格数组,其中每个单元格包含一个字符串数组。

  • 如果任何一str表达式是字符向量或字符串数组的单元格数组,则输出是与输入数组具有相同维度的单元格数组。每个单元格包含一个1 × -ngydF4y2Ba单元格数组,其中每个内单元格包含一个1 × -数组中。

    如果str是一个由字符向量组成的单元格数组,那么每个内单元格都包含一个1 ×单元阵列。如果str是一个字符串数组,那么每个内单元格都包含一个1 ×字符串数组。

  • 如果str而且表达式都是单元格数组或字符串数组,它们必须具有相同的维数。输出是具有相同尺寸的单元格数组。

    如果str是字符向量的单元格数组,则输出也是。如果str是字符串数组,则输出为单元格数组,其中最里面的单元格包含字符串数组。

当您指定“一次”选项只返回一个匹配项,则输出为1 × -字符串数组,字符向量的单元格数组,或具有相同尺寸的单元格数组str和/或表达式

如果期望在特定索引处找到一个令牌,但没有找到,则MATLAB为该令牌返回一个空值,对于字符向量,或者""为字符串。

“名字”

每个命名令牌的名称和文本

所有比赛:

  • 如果str而且表达式都是字符向量或字符串标量,输出是1 ×ngydF4y2Ba结构数组,其中ngydF4y2Ba是匹配的数量。结构字段名称对应于令牌名称。

  • 如果str表达式是字符向量或字符串数组的单元格数组,则输出是与输入数组具有相同维度的单元格数组。每个单元格包含一个1 × -ngydF4y2Ba结构数组。

  • 如果str而且表达式都是单元格数组或字符串数组,它们必须具有相同的维数。输出是具有相同尺寸的单元格数组。

“分裂”

的不匹配子字符串的文本str

所有比赛:

  • 如果str而且表达式都是字符向量或字符串标量,输出是1 ×ngydF4y2Ba数组,ngydF4y2Ba是不匹配的数量。

    如果str是字符向量,则输出是字符向量的单元格数组。如果str为字符串标量,则输出为字符串数组。

  • 如果任何一str表达式是字符向量或字符串数组的单元格数组,则输出是与输入数组具有相同维度的单元格数组。每个单元格包含一个1 × -ngydF4y2Ba字符向量的单元格数组。

    如果str是字符向量的单元格数组,则输出也是。如果str为字符串数组,则输出为单元格数组,其中每个单元格包含一个字符串数组。

  • 如果str而且表达式都是单元格数组,它们必须具有相同的尺寸。输出是具有相同尺寸的单元格数组。

    如果str是字符向量的单元格数组,则输出也是。如果str为字符串数组,则输出为单元格数组,其中每个单元格包含一个字符串数组。

更多关于

全部折叠

令牌

令牌是匹配文本的部分,对应于正则表达式的部分。若要创建令牌,请将部分正则表达式括在圆括号中。

例如,这个表达式查找表单的日期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'

有关更多信息,请参见正则表达式中的令牌

提示

  • 使用包含strfind在文本中查找精确的字符匹配。使用正则表达式寻找字符的模式。

算法

MATLAB从左到右解析每个输入字符向量或字符串,试图将字符向量或字符串中的文本与正则表达式的第一个元素匹配。在此过程中,MATLAB跳过不匹配的任何文本。

当MATLAB找到第一个匹配时,它继续解析以匹配表达式的第二部分,依此类推。

R2006a之前介绍

这个话题有用吗?