如何使用非捕获组影响字符串匹配的方式?

时间:2017-12-19 13:15:16

标签: python regex

我想知道使用非捕获组有什么意义。

我在regex101.com上测试了一堆简单的正则表达式,发现无论是否使用非捕获组都不会影响捕获字符串所需的步骤数。

对于example

fo(o)

需要6个步骤来匹配foo

fo(?:o)

也需要6个步骤。

我知道使用非捕获组意味着匹配结果中会有少一个组,但那又是什么?我仍然可以计算我想要的文本在哪个组中并获得该组。我需要的组号可能会有所不同,但我仍然能够以任何方式获得该组。

example

f(o)+(.)\2+

几乎与

相同
f(?:o)+(.)\1+

在阅读了这个post之后,我了解到,对于非捕获组,正则表达式引擎不会通过将字符放入数组来“捕获”非捕获组中匹配的字符。但是,存储捕获的字符串的空间是不是可以忽略不计?

如果使用非捕获组,捕获组的正则表达式的示例是什么/表现显着不同?或者,什么是必须使用非捕获组的情况的示例?

P.S。我不认为正则表达式的味道在这里很重要,因为每个主要的正则表达式的非捕获和捕获组的行为都相同(我认为)。如果我错了,在python中回答会很好。

0 个答案:

没有答案