目录
语法
说明
示例
更新的文本
在替代文本中包括词元
在替代文本中包括动态表达式
更新多段文本
保留原始文本中的大小写
替换零长度匹配项
regexprep函数的功能是使用正则表达式替换文本。
语法
newStr = regexprep(str,expression,replace)
newStr = regexprep(str,expression,replace,option1,...optionM)
说明
newStr= regexprep(str,expression,replace) 将 str 中与 expression 匹配的文本替换为 replace 描述的文本。regexprep 函数在 newStr 中返回更新的文本。
-
如果 str 是一段文本(字符向量或字符串标量),则 newStr 也是一段相同类型的文本。即使 expression 或 replace 是字符向量元胞数组或字符串数组,newStr 也是一段文本。当 expression 为元胞数组或字符串数组时,regexprep 将第一个表达式应用于 str,然后将每个后续表达式应用于前面的结果。
-
如果 str 是元胞数组或字符串数组,则 newStr 是与 str 具有相同维度的元胞数组或字符串数组。对于 str 的每个元素,regexprep 函数按顺序应用各表达式。
-
如果不存在与 expression 的匹配项,则 newStr 等同于 str。
newStr= regexprep(str,expression,replace,option1,...optionM) 使用指定的选项修改搜索。例如,指定 'ignorecase' 以执行不区分大小写的匹配。
示例
更新的文本
替换以 M
开头和以 y
结尾且其中至少有一个字符的单词。
str = 'My flowers may bloom in May';
expression = 'M(\w+)y';
replace = 'April';newStr = regexprep(str,expression,replace)
newStr =
'My flowers may bloom in April'
在替代文本中包括词元
通过在词元中捕获紧随 'walk' 的字母来替换短语 'walk up' 的变体。
str = 'I walk up, they walked up, we are walking up.';
expression = 'walk(\w*) up';
replace = 'ascend$1';newStr = regexprep(str,expression,replace)
newStr =
'I ascend, they ascended, we are ascending.'
在替代文本中包括动态表达式
使用 upper 函数将句子开头的小写字母替换为其大写形式。
str = 'here are two sentences. neither is capitalized.';
expression = '(^|\.)\s*.';
replace = '${upper($0)}';newStr = regexprep(str,expression,replace)
newStr =
'Here are two sentences. Neither is capitalized.'
该正则表达式匹配紧随字符向量 (^) 开头的单个字符 (.) 或句点 (\.) 和任何空白 (\s*)。replace 表达式调用 upper 函数以获取当前匹配的字符 ($0)。
更新多段文本
将一组字符向量中的每个双重复字母替换为符号 '--'
。
str = { ...
'Whose woods these are I think I know.' ; ...
'His house is in the village though;' ; ...
'He will not see me stopping here' ; ...
'To watch his woods fill up with snow.'};expression = '(.)\1';
replace = '--';
newStr = regexprep(str,expression,replace)
newStr = 4x1 cell{'Whose w--ds these are I think I know.'}{'His house is in the vi--age though;' }{'He wi-- not s-- me sto--ing here' }{'To watch his w--ds fi-- up with snow.'}
保留原始文本中的大小写
在查找匹配项时忽略正则表达式中的字母大小写,但在更新时模拟原始文本的字母大小写。
str = 'My flowers may bloom in May';
expression = 'M(\w+)y';
replace = 'April';newStr = regexprep(str,expression,replace,'preservecase')
newStr =
'My flowers april bloom in April'
替换零长度匹配项
使用 '^' 运算符在字符向量开头插入文本,这将返回零长度匹配项,以及 'emptymatch' 关键字。
str = 'abc';
expression = '^';
replace = '__';newStr = regexprep(str,expression,replace,'emptymatch')
newStr =
'__abc'
参数说明
str — 要更新的文本
要更新的文本,指定为字符向量、字符向量元胞数组或字符串数组。
expression — 正则表达式
正则表达式,指定为字符向量、字符向量元胞数组或字符串数组。每个表达式可包含字符、元字符、运算符、词元和用于指定在 str 中匹配的模式的标志。
replace — 替代文本
替代文本,指定为字符向量、字符向量元胞数组或字符串数组,如下所示:
-
如果 replace 为单个字符向量且 expression 为字符向量元胞数组,则 regexprep 对每个表达式使用相同的替代文本。
-
如果 replace 为 N 字符向量的元胞数组且 expression 为单个字符向量,则 regexprep 尝试 N 次匹配和替代。
-
如果 replace 和 expression 均为字符向量元胞数组,则它们必须包含相同数量的元素。regexprep 将每个 replace 元素与 expression 中与其匹配的元素配对。
option — 搜索或替代选项
搜索或替代选项,指定为一个字符向量或整数值。
newStr — 更新的文本
更新后的文本,以字符向量、字符向量元胞数组或字符串数组的形式返回。newStr 的数据类型与 str 的数据类型相同。