Python 正则表达式中的分组
我在用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 个回答
3
如果这个格式是固定的,那就不需要用正则表达式,这样反而会让事情变得复杂。直接用 split
就可以了:
text.strip('@').split(':')
这样就可以搞定了。
1
正则表达式中的组的数量是固定的。你需要以某种方式进行后处理。