5.3.5字符串中的搜索和替换

 
: newstr = strrep (str, ptn, rep)
: newstr = strrep (cellstr, ptn, rep)
: newstr = strrep (…, "overlaps", val)

替换所有出现的图案ptn在字符串中str用绳子代表并返回结果。

可选参数重叠确定图案是否可以在中的每个位置匹配str(true),或仅用于完全模式的唯一出现(false)。默认值为true。

s也可以是字符串的元胞数组,在这种情况下,对每个元素进行替换,并返回元胞数组。

用例

strrep(“这是一个测试字符串”、“is”、“&%$”)⇒  “测试字符串&%$&%$

详见: regexprep, strfind.

 
: newstr = erase (str, ptn)

删除所有出现的ptn在内部str.

strptn可以是普通字符串、字符串的元胞数组或字符数组。

示例

##字符串,单模式擦除(“Hello World!”,“World”)⇒ “你好!”##cellstr,single patternerase({“你好”,“世界!”},“世界”)⇒ {“你好”,“!”}#string,multiple patternserase(“Octave解释器太棒了”,…{“解释器”,“The”})⇒ “Octave太棒了”##cellstr,multiple patternserase({“The”,“Octave-explorer”,“is mexible”},…{“interpreter”,“The”})⇒ {“”、“octave”、“太棒了”}

编程说明:擦除当出现重叠时,删除跨接中图案的第一个实例。例如

擦除(“abababa”,“aba”)⇒ b

有关处理重叠的信息,详见串替换.

详见: strrep, regexprep.

 
: [s, e, te, m, t, nm, sp] = regexp (str, pat)
: […] = regexp (str, pat, "opt1", …)

正则表达式字符串匹配。

搜索拍打以UTF-8编码str并返回任何匹配项的位置和子字符串,如果没有,则返回空值。

匹配的图案拍打可以包括任何标准regexoperator,包括:

.

匹配任何字符

* + ? {}

重复运算符,表示

*

匹配零次或多次

+

匹配一次或多次

?

匹配零次或一次

{n}

完全匹配n

{n,}

火柴n或更多次

{m,n}

之间匹配mn

[…] [^…]

列出运算符。该模式将与之间列出的任何字符匹配[]。如果第一个字符是^则模式反转,除括号之间列出的字符外的任何字符都将匹配。

下面定义的转义序列也可以在列表运算符中使用。例如,浮点数字的模板可能是d.

() (?:)

分组运算符。第一种形式(仅括号)也会创建一个符号。

|

交替运算符。匹配所选正则表达式中的一个。备选方案必须从分组运算符分隔()在上面

^ $

锚固运算符。要求在开始时出现模式(^)orend($)字符串的。

此外,以下转义字符具有特殊含义。

d

匹配任意数字

D

匹配任何非数字

s

匹配任何空白字符

S

匹配任何非空白字符

w

匹配任意单词字符

W

匹配任何非单词字符

\<

匹配单词的开头

\>

匹配单词的末尾

B

单词内匹配

支持说明:为了与兼容MATLAB,转义序列in拍打(例如。,n=>换行符)被扩展,即使当拍打已用单引号定义。要禁用扩展,请在转义序列之前使用第二个反斜杠(例如,“\\n”),或者使用regexptranslate作用

的输出正则表达式默认以下顺序

s

每个匹配子字符串的起始索引

e

每个匹配子字符串的结束索引

te

从包围的每个匹配令牌的范围(…)在里面拍打

m

每个匹配的文本的元胞数组

t

匹配的每个符号的文本的元胞数组

纳米

一个结构体,包含每个匹配的命名符号的文本,名称用作字段名。命名令牌表示为Name.

服务提供商

匹配未返回的文本的元胞数组,即,如果您根据拍打.

特定的输出参数或输出参数的顺序可以从附加的opt参数。这些是字符串以及输出参数和可选参数之间的对应关系

开始 s
终止 e
tokenExtents te
火柴 m
令牌 t
Name 纳米
分裂 服务提供商

其他参数总结如下。

一旦

只返回第一次出现的模式。

火柴盒

使匹配的大小写敏感。默认

或者,在模式中使用(?-i)。

忽略大小写

将模式与字符串匹配时忽略大小写。

或者,在模式中使用(?i)。

斯特林根霍斯

匹配字符串开头和结尾的定位字符。(默认值)

或者,在模式中使用(?-m)。

线锚

匹配行首和行尾的定位字符。

或者,在图案中使用(?m)。

dotall

图案.匹配包括换行符在内的所有字符。默认

或者,在模式中使用(?s)。

点例外换行

图案.匹配除换行符以外的所有字符。

或者,在模式中使用(?-s)。

文字空间

模式中的所有字符,包括空格,都是重要的,并用于模式匹配。默认

或者,在模式中使用(?-x)。

自从空间

该模式可能包括任意空白,也可能包括以字符“”开头的注释#’.

或者,在模式中使用(?x)。

无比赛

不返回长度为零的匹配项。默认

空火柴

返回零长度的匹配项。

regexp('a','b*','emptymatch')退货[1 2]因为有零个或更多b位置1和字符串末尾的字符。

堆栈限制注意:模式搜索是用递归函数完成的,当有大量匹配时,递归函数可能会溢出程序堆栈。例如

regexp(repmat('a',1,1e5),'(a)+')

可能导致segfault。作为一种替代方案,考虑构建减少匹配数量的模式搜索(例如,通过创造性地使用setcomplement),然后用连续的正则表达式搜索。

Octave的正则表达式实现基于Perl兼容正则表达式库(https://www.pcre.org/). 更全面的列表正则表达式运算符语法详见PCRE语法快速参考摘要.

详见: regexpi, strfind, regexprep.

 
: [s, e, te, m, t, nm, sp] = regexpi (str, pat)
: […] = regexpi (str, pat, "opt1", …)

不区分大小写的正则表达式字符串匹配。

搜索拍打以UTF-8编码str并返回任何匹配项的位置和子字符串,如果没有,则返回空值。详见正则表达式,以获取有关搜索模式语法的详细信息。

详见: 正则表达式.

 
: outstr = regexprep (string, pat, repstr)
: outstr = regexprep (string, pat, repstr, "opt1", …)

替换出现的图案拍打在里面一串具有repstr.

该模式是一个正则表达式,如所述正则表达式详见正则表达式.

所有字符串都必须是UTF-8编码的。

替换字符串可能包含$i,它替换匹配字符串中的第i组圆括号。例如,

regexprep(“Bill Dunn”,“(\w+)(\w+)”,“$2,$1”)

退货邓恩,比尔

的参数之外的参数正则表达式

一旦

仅替换第一次出现的拍打结果。

警告

此参数是为了兼容而存在的,但会被忽略。

支持说明:为了与兼容MATLAB,转义序列in拍打(例如。,n=>换行符)被扩展,即使当拍打已用单引号定义。要禁用扩展,请在转义序列之前使用第二个反斜杠(例如,“\\n”),或者使用regexptranslate作用

详见: 正则表达式, regexpi, strrep.

 
: str = regexptranslate (op, s)

翻译用于正则表达式的字符串。

这可能包括通配符替换或特殊字符转义。

行为从控制op可以取以下值

通配符

通配符., *?替换为适用于正则表达式的通配符。例如

regexptranslate(“通配符”、“*.m”)⇒ '.*\.m
逃跑

角色$.?[],对正则表达式具有特殊意义,这些正则表达式被转义,以便按字面意思处理。例如

regexptranslate(“escape”,“12.5”)⇒ '12\.5

详见: 正则表达式, regexpi, regexprep.


版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-1