可变长度匹配数

我正在试图解析一个文档,其中的参考编号散落在整个文档中。

文本文本{4:2}更令人难以置信的文本{4:3}很久以后 还有更多的文字。

引用将始终包装在方括号中,并且两者之间总是有一个冒号。我写了一句话来找他们。

{[0-9]:[0-9]}

然而,当你遇到一个两位或三位数字的时候,这显然就失败了,我很难想出这个数字应该是什么。永远不会有超过3位数字{999:999}是要处理的最大大小。

有人知道怎么表达吗?

352038 次浏览
{[0-9]+:[0-9]+}

试着加上加号

试试这个:

{[0-9]{1,3}:[0-9]{1,3}}

{1,3}表示“匹配前面的1到3个字符”。

可以使用 {min,max}指定希望前一项匹配的次数。

{[0-9]{1,3}:[0-9]{1,3}}

此外,对于大多数正则表达式,您可以使用 \d代替 [0-9]:

{\d{1,3}:\d{1,3}}

您可能还需要考虑转义外部 {},只是为了明确它们不是重复定义的一部分。

您使用的是什么正则表达式引擎? 它们中的大多数都支持以下表达式:

\{\d+:\d+\}

\d实际上是 [0-9]的简写,但重要的部分是增加了 +,意思是“一个或多个”。