正则表达式捕获冒号之间的值,包括空白值

Regular Expression to capture values between colons including blank values

我有一个字符串,其中可能包含 9 个由冒号分隔的值。我将为该字符串有 2 个潜在结构:

value1:value2:value3:value4:value5::value7:value8:
value1:value2:value3:value4::value6:value7::value9

我需要能够分解它并存储每个单独的值。我们想出了这样的东西

^(.+)?\:(.+)?\:(.+)?\:(.+)?\:(.+)?(\:\:)(.+)?\:(.+)?(\:\:)$

但它不允许两种结构。

A​​dobe Analytics 正在使用它来捕获各个值(如果有帮助的话)。

我假设这是针对 Classification Rule Builder(CRB) 的。 @Wiktor 的评论答案没问题,但您不需要在他提供的正则表达式中包含 \n 。不过,他的正则表达式假设的一件事是,您所有现有的键都具有所有 9 个值,或者至少有占位符冒号。根据我的实践经验,情况并非总是如此。历史数据可能较少,因为需求发生了变化。如果您是这种情况,那么这是@Wiktor 提供的稍微修改过的正则表达式:

^([^:]*)(?::([^:]*))?(?::([^:]*))?(?::([^:]*))?(?::([^:]*))?(?::([^:]*))?(?::([^:]*))?(?::([^:]*))?(?::([^:]*))?$

这将为您提供 </code> 到 <code> 的值:

value1:value2:value3:value4:value5:value6:value7:value8:value9

 = value1
 = value2
 = value3
 = value4
 = value5
 = value6
 = value7
 = value8
 = value9

或者您可以为它们设置空的 :: 占位符,例如

value1:value2::value4:value5::value7:value8:value9

 = value1
 = value2
 = 
 = value4
 = value5
 = 
 = value7
 = value8
 = value9

如果您没有完整的 9 值字符串,它也会匹配当前值,例如

value1:value2::value4

 = value1
 = value2
 = 
 = value4