我正在尝试解析整个文档中包含参考编号的文档。
文本文本{4:2}更多令人难以置信的文字{4:3} {222:115}还有更多文字。
引用将始终包含在括号中,并且两者之间始终存在冒号。我写了一个表达式来找到它们。
{[0-9]:[0-9]}
然而,当你遇到一个两位或三位数时,这显然是失败的,而我却无法弄清楚应该是什么。不会超过3位数{999:999}是要处理的最大尺寸。
有人知道处理这个的正确表达吗?
答案 0 :(得分:104)
{[0-9]+:[0-9]+}
尝试添加加号(es)
答案 1 :(得分:60)
你使用什么正则表达式引擎?他们中的大多数将支持以下表达式:
\{\d+:\d+\}
\d
实际上是[0-9]
的简写,但重要的是添加+
,意思是“一个或多个”。
答案 2 :(得分:24)
试试这个:
{[0-9]{1,3}:[0-9]{1,3}}
{1,3}
表示“匹配前面1到3个字符”。
答案 3 :(得分:8)
您可以使用{min,max}
指定上一项匹配的次数。
{[0-9]{1,3}:[0-9]{1,3}}
此外,对于大多数正则表达式,您可以使用\d
代替[0-9]
:
{\d{1,3}:\d{1,3}}
您可能还想考虑转义外部{
和}
,只是为了明确它们不是重复定义的一部分。
答案 4 :(得分:0)
{\ d *:\ d *}应该可以工作。
*表示匹配0个或多个先前出现的匹配项,是一个数字。