帮助中心帮助中心
匹配模式而不回溯
自 R2020b 起
newpat = possessivePattern(pat)
newpat = possessivePattern(pat) 创建一个模式,一旦 pat 匹配,该模式就不会在 pat 内回溯。
newpat
pat
如果某字符可能与表达式中的多个模式匹配,例如数字字符与 alphanumericsPattern + digitsPattern,则可能会测试所有可能的匹配组合以尝试找到成功的匹配。此过程称为回溯。
alphanumericsPattern + digitsPattern
possessivePattern 防止回溯,因此一旦 possessivePattern 匹配,匹配的文本就不再与模式表达式的其他部分匹配,即使这导致模式无法匹配也是如此。使用 possessivePattern 通过限制为找到匹配而测试的可能模式组合来提高性能。
possessivePattern
示例
全部折叠
使用 possessivePattern,即一旦模式的主动部分匹配就不进行回溯。这将阻止模式表达式中的其他模式进行匹配。
将 txt 创建为由字母和数字字符组成的字符串。将 nonpossessive 创建为一个模式,该模式匹配符合 alphanumericsPattern 的字母或数字后跟符合 digitsPattern 的数字。alphanumericsPattern 本身匹配整个字符串,但它允许回溯,以便 digitsPattern 也能够匹配。
txt
nonpossessive
alphanumericsPattern
digitsPattern
txt = "abc123"; nonpossessive = alphanumericsPattern + digitsPattern; successfulMatch = contains(txt,nonpossessive)
successfulMatch = logical 1
将 alphanumericsPattern 设置为主动。主动模式阻止回溯,因此 alphanumericsPattern 匹配整个字符串并且不回溯以允许 digitsPattern 也匹配。此属性导致 possessive 不匹配 txt。
possessive
possessive = possessivePattern(alphanumericsPattern) + digitsPattern; unsuccessfulMatch = contains(txt,possessive)
unsuccessfulMatch = logical 0
输入模式,指定为pattern、字符串数组、字符向量或字符向量元胞数组。
pattern
数据类型: char | string | pattern | cell
char
string
cell
输出模式,以pattern或模式对象数组形式返回。
backgroundPool
ThreadPool
在 R2020b 中推出
pattern | contains | extract | optionalPattern
contains
extract
optionalPattern
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office