主要内容

regexprep

使用正则表达式替换文本

描述

例子

newStr= regexprep (str.,表达,取代将文本替换str.相匹配表达正文由取代.这regexprep函数返回更新后的文本newStr

  • 如果str.是单个文本(字符向量或字符串标量)吗newStr也是同一类型的单个文本。newStr是一段文字甚至什么时候表达取代是字符向量的单元格数组或字符串数组。当表达是单元格数组或字符串数组,regexprep适用第一个表达式str.,然后将每个后续表达式应用到前面的结果。

  • 如果str.是单元格数组还是字符串数组newStr是一个单元数组或字符串阵列,尺寸与str..对于每个元素str.,regexprep函数依次应用每个表达式。

  • 如果没有匹配表达,然后newStr相当于str.

例子

newStr= regexprep (str.,表达,取代,选项1,…选项米)使用指定的选项修改搜索。例如,指定'Ignorecase'执行不区分大小写的匹配。

例子

全部折叠

替换以最后,y,且两者之间至少有一个字符。

str =“我的花可能在五月盛开”;表达=“M (\ w +) y”;替换=“4”;newStr = regexprep (str,表情,取代)
纽约威尔='我的花朵可能会在四月开始绽放

替换短语的变化'步行'通过捕捉后面的字母'走'在一个令牌。

str =“我走过去,他们走过去,我们也在走。”;表达=步行(\ w *)”;替换=“提升1美元”;newStr = regexprep (str,表情,取代)
我上升,他们上升,我们也在上升。

用他们的大写等价物在句子开头替换小写字母函数。

str =这里有两个句子。都是大写。;表达=”(^ | \)\ s *。”;替换=“${上(0美元)}”;newStr = regexprep (str,表情,取代)
这里有两个句子。都是大写。

正则表达式匹配单个字符(),跟随字符向量的开始(^)或一段时间内(\)。和任何空格(\ s *).这取代表达式调用函数的当前匹配字符($0).

用符号替换一组字符向量中的每次发生双字母“——”

str = {...“我想我知道这是谁的树林。”...“不过他的家在村子里。”...“他不会看见我停在这里的。”...“看他的树林被雪覆盖。”};表达='(。)\ 1';替换=“——”;newStr = regexprep (str,表情,取代)
newStr =4 x1细胞{'我想我知道这些是谁的。不过他的房子还在旧时,他不会让我呆在这里看他的房子被雪覆盖的。

查找匹配时,在正则表达式中忽略字母案例,但更新时模仿原始文本的字母案例。

str =“我的花可能在五月盛开”;表达=“M (\ w +) y”;替换=“4”;newStr = regexprep (str,表达、替换“preservecase”
纽约市='我的花朵四月绽放了四月'

使用该字符向量的开头插入文本“^”操作符,该操作返回零长度匹配,以及“emptymatch”关键字。

str =“abc”;表达=“^”;替换=“_”;newStr = regexprep (str,表达、替换“emptymatch”
newStr = ' __abc '

输入参数

全部折叠

要更新的文本,指定为字符向量、字符向量的单元格数组或字符串数组。

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

正则表达式,指定为字符向量、字符向量的单元格数组或字符串数组。每个表达式可以包含指定要匹配的模式的字符、元字符、操作符、标记和标志str.

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

元字符

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

元字符

描述

例子

任何单个字符,包括空白

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

[c1c2c3.

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

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

[c ^1c2c3.

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

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

[c1- c2

范围内的任何角色c1通过c2

'[A-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

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

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

\ d

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

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

\ D

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

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

\在阿\ {N}

八万价值的特征N

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

\ xNx \ {N}

十六进制值的特征N

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

字符表示

操作符

描述

、一个

报警(嘟)

\ b

退格

\ f

换页

\ n

新行

r \

回车

\ t

水平选项卡

v \

垂直制表符

字符

任何在正则表达式中具有特殊含义的字符,您希望按字面意义匹配(例如,use\\要匹配单个反斜杠)

量词

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

量词

发生的次数

例子

expr *

连续0或更多次。

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

expr吗?

0乘以1乘以。

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

expr +

连续1次或更多。

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

expr {m,n}

至少时间,但仅此而已ngydF4y2Ba*连续。

{0,1}相当于

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

expr {m,}

至少*连续。

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

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

expr {n}

完全ngydF4y2Ba*连续。

相当于{n, n}

“\ d{4}”匹配四个连续的数字。

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

'''

模式

描述

例子

expr

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

考虑到文本' < tr > < td > < p >文本< / p > < / td >”,该表达式“* > < / ? t。”匹配之间的所有字符/ 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}”匹配元音和非元音的两个连续模式,例如'anon'

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

(? > expr)

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

'a(?>。*)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

看看断言

LookAround断言查找立即在预期匹配之前立即或遵循预期匹配的模式,但不是匹配的一部分。

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

PookAround断言

描述

例子

expr(? =测试)

向前查找匹配的字符测试

“\ w * (? = ing)”匹配后面跟着的术语ing,如“飞”“秋天”在输入文本中“飞行,而不是下降。”

expr(?!测试)

提前查找不匹配的字符测试

“我(? ! ng)”匹配的实例的信没有紧随其后的ng

(?<=测试)expr

查找匹配的字符测试

(? < = re) \ w *’匹配下面的术语“重新”,如“新”,“使用”,“循环”在输入文本中'续签,重用,回收'

(? < !测试)expr

查找不匹配的字符测试

“(? < ! \ d) (\ d) (? ! \ d)”匹配单位数字(未在或遵循其他数字之前的数字)。

如果指定了前向断言之前一个表达式,相当于一个逻辑运算

手术

描述

例子

(? =测试)expr

匹配两个测试expr

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

(? !测试)expr

匹配expr并且不匹配测试

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

逻辑和条件运算符

逻辑和条件运算符允许您测试给定条件的状态,然后使用结果确定哪个模式,如果有的话,以匹配下一个模式。这些运营商支持逻辑金宝app,如果如果/其他条件。

条件可以是令牌,loesArweround运算符或表格的动态表达式(? @cmd).动态表达式必须返回逻辑或数值。

条件运算符

描述

例子

expr1 | expr2

匹配表达式expr1或表达expr2

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

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

(?(电导率)expr)

如果条件条件真正的,然后匹配expr

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

(?(电导率)expr1 | expr2)

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

“先生(s?)\ .. *?(?(1)她|他的)\ w *'匹配包含她的当文本开始时太太,或包括他的当文本开始时先生

令牌运营商

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

序数牌运营商

描述

例子

(expr)

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

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

\ N

匹配N令牌。

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

(? (N) expr1 | expr2)

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

“先生(s?)\ .. *?(?(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美元))”查找长度至少为4个字符的回文,例如“神父”

(? @cmd)

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

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

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

替换操作符

描述

$ &$0

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

美元的

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

美元的

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

$ N

Nth令牌

$ <名称>

命名为令牌

$ {cmd}

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

评论

人物

描述

例子

(? #评论)

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

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

搜索的旗帜

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

国旗

描述

(?-一世)

匹配信箱(默认为正则表达式regexprep).

(我)?

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

(?)

匹配点(),以任意字符(默认)表示。

(? - s)

用非换行符的任何字符匹配模式中的点。

(?-m)

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

(?)

匹配在行首和行尾的元字符。

(? - x)

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

x (?)

匹配时忽略空格字符和注释。使用'\'“\ #”匹配空间和人物。

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

(?我)\ w *

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

(?我:\ w *)

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

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

替换文本,指定为字符向量、字符向量单元格数组或字符串数组,如下所示:

  • 如果取代是单字符向量和表达是字符向量的单元格数组吗regexprep对每个表达式使用相同的替换文本。

  • 如果取代是一个细胞阵列N特征向量和表达是单个字符向量吗regexprep尝试N匹配和替换。

  • 如果两个取代表达是字符向量的单元格数组,那么它们必须包含相同数量的元素。regexprep每两对取代元素及其匹配的元素表达

替换文本可以包括常规字符,特殊字符(例如标签或新行)或替换运算符,如下表所示。

替换操作符

描述

$ &$0

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

美元的

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

美元的

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

$ N

Nth令牌

$ <名称>

命名为令牌

$ {cmd}

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

操作符

描述

、一个

报警(嘟)

\ b

退格

\ f

换页

\ n

新行

r \

回车

\ t

水平选项卡

v \

垂直制表符

字符

任何在正则表达式中具有特殊含义的字符,您希望按字面意义匹配(例如,use\\要匹配单个反斜杠)

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

搜索或替换选项,指定为字符向量或整数值,如下表所示。

选项以集合的形式出现:一个选项对应于默认行为,一个或两个选项允许您覆盖默认行为。从集合中只指定一个选项。选项可以以任何顺序出现。

默认的

覆盖

描述

“所有”

“一次”

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

N

只替换N发生比赛的发生,在哪里N为整数值。

“nowarnings”

“警告”

抑制警告(默认),或显示它们。

“matchcase”

'Ignorecase'

匹配字母大小写(默认),或在匹配和替换时忽略大小写。

“preservecase”

匹配时忽略案例,但在替换时保留原始文本中的相应字符的情况。

“noemptymatch”

“emptymatch”

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

“dotall”

'dotexcepnewline'

匹配点与任何字符(默认),或者除换行符以外的所有匹配点(\ n).

“stringanchors”

“lineanchors”

应用元字符到字符向量的开头和结尾(默认),或到行开头和结尾。换行符(\ n)指定一行的结束。行的开始被指定为第一个字符,或者换行符后面的任何字符。

“literalspacing”

“freespace”

在匹配时包括空格字符和注释(默认),或者忽略它们。与空闲空间,使用'\'“\ #”匹配空间和人物。

数据类型:字符|字符串

输出参数

全部折叠

更新的文本,作为字符向量返回,字符向量的单元格数组或字符串数​​组。数据类型newStr与的数据类型相同吗str.

扩展能力

之前介绍过的R2006a