如何为此制作正则表达式?

how to make a regular expression for this?

我想对字符串 "{{c1::tiger}} 做一个正则表达式是 一种 {{c2::animal::something movable}}" 来得到单词 "tiger" 和 "animal",我已经做了这个表达式 \{\{c\d+::((?P<value>.*?)(:{0,2})(.*?))\}\},我也想用 group('value') 实现 this.The 结果词 "tiger" 正是我所需要的,但总是得到错误的结果 "animal::something movable"(我的意思是 "animal"),谁能帮我解决这个问题?谢谢。

您尝试的模式包含 4 个捕获组,对于当前示例数据组 1 和组 3 为空。

要获得 tiger,您可以使用带有否定字符的单个捕获组 class:

\{\{c\d+::(?P<value>.*?)(?:::|}})

Regex demo

如果结束 }} 必须存在,您可以使用:

\{\{c\d+::(?P<value>.*?)(?:::.*)?}}

Regex demo

这适用于您的示例字符串:

c1::(?P<valueTiger>[a-z]*).*?c2::(?P<valueAnimal>[a-z]*)

Regex101

\{\{c\d+::(?P<value>[^:}]+)(?::{0,2}([^}]+))?\}\}

Demo