在Python正则表达式中分组

时间:2011-06-21 18:24:32

标签: python regex grouping

所以我正在使用Python中的正则表达式。这是我到目前为止所得到的(通过RegExr调试):

@@(VAR|MVAR):([a-zA-Z0-9]+)+(?::([a-zA-Z0-9]+))*@@

所以我想要匹配的是这样的东西:

@@VAR:param1@@
@@VAR:param2:param3@@
@@VAR:param4:param5:param6:0@@

基本上,你有VAR或MVAR后跟冒号然后是一些参数名称,然后是结束字符(@@)或另一个:和一个参数。

所以,我在正则表达式上获得的组是VAR,第一个参数,然后是参数列表中的最后一个(对于最后一个例子,第三个组将是0)。我知道组是由(...)创建的,但是正则表达式是否有任何方法可以匹配多个组,因此param5,param6和0在它们自己的组中,而不是只有最多三个组?

我想避免必须匹配此字符串然后必须拆分:,因为我认为这是能够使用正则表达式完成的。也许我正以错误的方式接近这一点。

基本上,我试图看看我是否可以在匹配过程中找到并拆分而不是后期处理。

2 个答案:

答案 0 :(得分:3)

如果这种格式是固定的,你不需要正则表达式,它只会让它变得更难。只需使用split

text.strip('@').split(':')

应该这样做。

答案 1 :(得分:1)

正则表达式中的组数是固定的。你需要以某种方式进行后处理。