首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原子量化群是否与量化的原子群相同?

原子量化群是否与量化的原子群相同?
EN

Stack Overflow用户
提问于 2018-01-18 21:48:42
回答 1查看 73关注 0票数 4

我正在研究这个问题:this answerRegex nested parentheses,并认为不应该是一个量化的原子组(?> list | of | alternates )*,而应该是一个原子量化的组(?> (?: list | of | alternates )* )。我说错了吗?在regex的世界中,它们是相同的还是不同的?特别是在.NET实现方面?

我个人认为它们不同,我通常使用perl将其转换为(?: list | of | alternates )*+。无论如何,这对我来说要清楚得多,如果需要的话,我想在这个特定的正则表达式(一个原子量化的组)之前回溯。然而,也许这是作为一个设计决策来实现的,在这个设计中,思路是量化的原子群是没有用的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-19 01:37:25

当原子群作为独立表达式被调用时,

回溯确实发生在它的内部,就像其他地方一样。

区别在于原子组无法控制回溯。

外部机制。

因此,一个原子群的每一个量化的传递都只计算一个

实例,该实例不会导致回溯。

但是,如果将量词放在非量化的集群组中。

原子群,影响是整个内容不会影响

外部回溯。

重要的是粒度。

示例

(?>a|b|c)*abc将与aaaaaabbbbbbbbbbbabc匹配

何地as

(?>(?:a|b|c)*)abc将与aaaaaabbbbbbbbbbbabc不匹配

因为(?:a|b|c)*子句消耗了它的全部,没有空间让它

找到abc

一个好的经验法则是:

如果量词位于原子组的外部,它可以控制回溯。

外部。

如果量词是原子组内部的,它可以控制回溯。

只限于内部。

并且,当您量化一个原子组时,在每次传递时,该流退出

组,这使得pass的结果(作为一个整体)有资格被回溯。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48330874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档