Main Content

possessivePattern

匹配模式而不回溯

自 R2020b 起

说明

newpat = possessivePattern(pat) 创建一个模式,一旦 pat 匹配,该模式就不会在 pat 内回溯。

如果某字符可能与表达式中的多个模式匹配,例如数字字符与 alphanumericsPattern + digitsPattern,则可能会测试所有可能的匹配组合以尝试找到成功的匹配。此过程称为回溯

possessivePattern 防止回溯,因此一旦 possessivePattern 匹配,匹配的文本就不再与模式表达式的其他部分匹配,即使这导致模式无法匹配也是如此。使用 possessivePattern 通过限制为找到匹配而测试的可能模式组合来提高性能。

示例

示例

全部折叠

使用 possessivePattern,即一旦模式的主动部分匹配就不进行回溯。这将阻止模式表达式中的其他模式进行匹配。

txt 创建为由字母和数字字符组成的字符串。将 nonpossessive 创建为一个模式,该模式匹配符合 alphanumericsPattern 的字母或数字后跟符合 digitsPattern 的数字。alphanumericsPattern 本身匹配整个字符串,但它允许回溯,以便 digitsPattern 也能够匹配。

txt = "abc123";
nonpossessive = alphanumericsPattern + digitsPattern;
successfulMatch = contains(txt,nonpossessive)
successfulMatch = logical
   1

alphanumericsPattern 设置为主动。主动模式阻止回溯,因此 alphanumericsPattern 匹配整个字符串并且不回溯以允许 digitsPattern 也匹配。此属性导致 possessive 不匹配 txt

possessive = possessivePattern(alphanumericsPattern) + digitsPattern;
unsuccessfulMatch = contains(txt,possessive)
unsuccessfulMatch = logical
   0

输入参数

全部折叠

输入模式,指定为pattern、字符串数组、字符向量或字符向量元胞数组。

数据类型: char | string | pattern | cell

输出参量

全部折叠

输出模式,以pattern或模式对象数组形式返回。

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2020b 中推出