匹配不包括文字星号的字符串

Match strings excluding literal asterisks

我在数据库中有一堆字段,其 ID 的形式为

abc::def::123::xyz

在某些记录中,id 的一个或多个部分被星号代替,例如

abc::def::123::xyz
abc::def::*::xyz
abc::def::123::*

我正在查询 RethinkDB 并需要匹配不包含星号的 ID,但我无法使其正常工作。我试过:

^\*
^[\*]

但是这些都不起作用。我错过了什么?如果相关的话,我是从 Python 开始的。

您可以尝试以下模式:

^\w{3}(?:::\w{3}){3}$

按照下面的 link 进行 运行 演示:

Demo

如果 :: 之间的词可以有任意长度,则使用 \w+ 匹配任意数量的字符,例如

^\w+(?:::\w+){3}$