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

时间:2017-10-09 16:50:07

标签: regex adobe-analytics

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

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

我需要能够将其分解并存储每个值。我们想出了类似的东西

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

但它不允许两种结构。

如果有任何帮助,可以在Adobe Analytics中使用它来捕获各个值。

1 个答案:

答案 0 :(得分:0)

我认为这是针对分类规则构建器(CRB)。 @ Wiktor的评论答案是可以的,但您不需要在他提供的正则表达式中包含\n。然而,他的正则表达式假定的一件事是,所有现有的键都具有所有9个值或者至少具有占位符冒号。根据我的实践经验,情况并非总是如此;由于需求发生变化,历史数据可能会减少。如果是这种情况,那么这是@Wiktor提供的稍微修改的正则表达式:

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

这会为$1通过$9提供值:

<强> value1:value2:value3:value4:value5:value6:value7:value8:value9

$1 = value1
$2 = value2
$3 = value3
$4 = value4
$5 = value5
$6 = value6
$7 = value7
$8 = value8
$9 = value9

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

<强> value1:value2::value4:value5::value7:value8:value9

$1 = value1
$2 = value2
$3 = 
$4 = value4
$5 = value5
$6 = 
$7 = value7
$8 = value8
$9 = value9

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

<强> value1:value2::value4

$1 = value1
$2 = value2
$3 = 
$4 = value4