正则表达式 – 非贪婪搜索和否定字符集之间的区别
发布时间:2020-12-14 06:23:10 所属栏目:百科 来源:网络整理
导读:这两个正则表达式模式之间是否有任何区别(假设启用了单行模式):a.*?b和a [^ b] * b?在性能方面呢? a.*?b必须检查每个消耗的字符是否与模式匹配(即,如果下一个是b).这称为回溯. 使用字符串a12b,执行将如下所示: 消费一个 使用以下0个字符.下一个是b吗?
这两个正则表达式模式之间是否有任何区别(假设启用了单行模式):a.*?b和a [^ b] * b?在性能方面呢?
a.*?b必须检查每个消耗的字符是否与模式匹配(即,如果下一个是b).这称为回溯.
使用字符串a12b,执行将如下所示: >消费一个 a [^ b] * b在没有问自己问题的情况下消耗任何不是b的东西,并且由于这个原因,对于更长的字符串来说要快得多. 使用字符串a12b,执行将如下所示: >消费一个 RegexHero有一个基准测试功能,可以使用.NET正则表达式引擎进行演示. 除性能差异外,它们与示例中的相同字符串匹配. 但是,有些情况下两者之间存在差异.在字符串aa111b111b中 (?< = aa.*?)b匹配两个b而(?< = aa [^ b] *)b仅匹配第一个. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |