it-swarm.cn

RegEx - 可变长度的匹配数

我正在尝试解析一个包含参考数字的文档。

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

引用将始终包含在括号中,并且两者之间始终存在冒号。我写了一个表达式来找到它们。

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

然而,当你遇到一个两位或三位数时,这显然是失败的,而我却无法弄清楚应该是什么。永远不会超过3位数{999:999}是要处理的最大尺寸。

有人想知道处理这个问题的正确表达方式吗?

100
Jarrod Nettles
{[0-9]+:[0-9]+}

尝试添加加号

102
genesis

你使用什么正则表达式引擎?他们中的大多数将支持以下表达式:

\{\d+:\d+\}

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

60
Lily Ballard

试试这个:

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

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

24
CanSpice

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

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

此外,对于大多数正则表达式,您可以将\d用于数字而不是[0-9]

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

您可能还想考虑转义外部{},只是为了清楚它们不是重复定义的一部分。

8
Andrew Clark

{\ d *:\ d *}应该有效。

*表示匹配前面出现的0个或多个,这是一个数字。

0
Ryan Y