newstr =
strrep (str, ptn, rep)
¶newstr =
strrep (cellstr, ptn, rep)
¶newstr =
strrep (…, "overlaps", val)
¶替换所有出现的图案ptn在字符串中str用绳子rep并返回结果。
可选参数"overlaps"
确定图案是否可以在中的每个位置匹配str(true),或仅用于完全模式的唯一出现(false)。默认值为true。
s也可以是字符串的元胞数组,在这种情况下,对每个元素进行替换,并返回元胞数组。
用例
strrep ("This is a test string", "is", "&%$") ⇒ "Th&%$ &%$ a test string"
newstr =
erase (str, ptn)
¶删除所有出现的ptn在内部str.
str和ptn可以是普通字符串、字符串的元胞数组或字符数组。
示例
## string, single pattern erase ("Hello World!", " World") ⇒ "Hello!" ## cellstr, single pattern erase ({"Hello", "World!"}, "World") ⇒ {"Hello", "!"} ## string, multiple patterns erase ("The Octave interpreter is fabulous", ... {"interpreter ", "The "}) ⇒ "Octave is fabulous" ## cellstr, multiple patterns erase ({"The ", "Octave interpreter ", "is fabulous"}, ... {"interpreter ", "The "}) ⇒ {"", "Octave ", "is fabulous"}
编程说明:erase
当出现重叠时,删除跨接中图案的第一个实例。例如
erase ("abababa", "aba") ⇒ "b"
有关处理重叠的信息,详见strrep
.
[s, e, te, m, t, nm, sp] =
regexp (str, pat)
¶[…] =
regexp (str, pat, "opt1", …)
¶正则表达式字符串匹配。
搜索pat以UTF-8编码str并返回任何匹配项的位置和子字符串,如果没有,则返回空值。
匹配的图案pat可以包括任何标准regexoperator,包括:
.
匹配任何字符
* + ? {}
重复运算符,表示
*
匹配零次或多次
+
匹配一次或多次
?
匹配零次或一次
{n}
完全匹配n次
{n,}
火柴n或更多次
{m,n}
之间匹配m和n次
[…] [^…]
列出运算符。该模式将与之间列出的任何字符匹配"["
和"]"
。如果第一个字符是"^"
则模式反转,除括号之间列出的字符外的任何字符都将匹配。
下面定义的转义序列也可以在列表运算符中使用。例如,浮点数字的模板可能是[-+.\d]+
.
() (?:)
分组运算符。第一种形式(仅括号)也会创建一个符号。
|
交替运算符。匹配所选正则表达式中的一个。备选方案必须从分组运算符分隔()
在上面
^ $
锚固运算符。要求在开始时出现模式(^
)orend($
)字符串的。
此外,以下转义字符具有特殊含义。
\d
匹配任意数字
\D
匹配任何非数字
\s
匹配任何空白字符
\S
匹配任何非空白字符
\w
匹配任意单词字符
\W
匹配任何非单词字符
\<
匹配单词的开头
\>
匹配单词的末尾
\B
单词内匹配
支持说明:为了与兼容MATLAB,转义序列inpat(例如。,"\n"
=>换行符)被扩展,即使当pat已用单引号定义。要禁用扩展,请在转义序列之前使用第二个反斜杠(例如,“\\n”),或者使用regexptranslate
作用
的输出regexp
默认以下顺序
每个匹配子字符串的起始索引
每个匹配子字符串的结束索引
从包围的每个匹配令牌的范围(…)
在里面pat
每个匹配的文本的元胞数组
匹配的每个符号的文本的元胞数组
一个结构体,包含每个匹配的命名符号的文本,名称用作字段名。命名令牌表示为(?<name>…)
.
匹配未返回的文本的元胞数组,即,如果您根据pat.
特定的输出参数或输出参数的顺序可以从附加的opt参数。这些是字符串以及输出参数和可选参数之间的对应关系
'start' |
s | ||
'end' |
e | ||
'tokenExtents' |
te | ||
'match' |
m | ||
'tokens' |
t | ||
'names' |
nm | ||
'split' |
sp |
其他参数总结如下。
只返回第一次出现的模式。
使匹配的大小写敏感。默认
或者,在模式中使用(?-i)。
将模式与字符串匹配时忽略大小写。
或者,在模式中使用(?i)。
匹配字符串开头和结尾的定位字符。(默认值)
或者,在模式中使用(?-m)。
匹配行首和行尾的定位字符。
或者,在图案中使用(?m)。
图案.
匹配包括换行符在内的所有字符。默认
或者,在模式中使用(?s)。
图案.
匹配除换行符以外的所有字符。
或者,在模式中使用(?-s)。
模式中的所有字符,包括空格,都是重要的,并用于模式匹配。默认
或者,在模式中使用(?-x)。
该模式可能包括任意空白,也可能包括以字符“”开头的注释#’.
或者,在模式中使用(?x)。
不返回长度为零的匹配项。默认
返回零长度的匹配项。
regexp ('a', 'b*', 'emptymatch')
返回[1 2]
因为有零个或更多'b'
位置1和字符串末尾的字符。
堆栈限制注意:模式搜索是用递归函数完成的,当有大量匹配时,递归函数可能会溢出程序堆栈。例如
regexp (repmat ('a', 1, 1e5), '(a)+')
可能导致segfault。作为一种替代方案,考虑构建减少匹配数量的模式搜索(例如,通过创造性地使用setcomplement),然后用连续的regexp
搜索。
Octave的regexp
实现基于Perl兼容正则表达式库(https://www.pcre.org/). 更全面的列表regexp
运算符语法详见PCRE语法快速参考摘要.
[s, e, te, m, t, nm, sp] =
regexpi (str, pat)
¶[…] =
regexpi (str, pat, "opt1", …)
¶不区分大小写的正则表达式字符串匹配。
搜索pat以UTF-8编码str并返回任何匹配项的位置和子字符串,如果没有,则返回空值。详见regexp
,以获取有关搜索模式语法的详细信息。
详见: regexp.
outstr =
regexprep (string, pat, repstr)
¶outstr =
regexprep (string, pat, repstr, "opt1", …)
¶替换出现的图案pat在里面string具有repstr.
该模式是一个正则表达式,如所述regexp
详见regexp
.
所有字符串都必须是UTF-8编码的。
替换字符串可能包含$i
,它替换匹配字符串中的第i组圆括号。例如,
regexprep ("Bill Dunn", '(\w+) (\w+)', '$2, $1')
返回"Dunn, Bill"
的参数之外的参数regexp
是
仅替换第一次出现的pat结果。
此参数是为了兼容而存在的,但会被忽略。
支持说明:为了与兼容MATLAB,转义序列inpat(例如。,"\n"
=>换行符)被扩展,即使当pat已用单引号定义。要禁用扩展,请在转义序列之前使用第二个反斜杠(例如,“\\n”),或者使用regexptranslate
作用
str =
regexptranslate (op, s)
¶翻译用于正则表达式的字符串。
这可能包括通配符替换或特殊字符转义。
行为从控制op可以取以下值
"wildcard"
通配符.
, *
和?
替换为适用于正则表达式的通配符。例如
regexptranslate ("wildcard", "*.m") ⇒ '.*\.m'
"escape"
角色$.?[]
,对正则表达式具有特殊意义,这些正则表达式被转义,以便按字面意思处理。例如
regexptranslate ("escape", "12.5") ⇒ '12\.5'
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2