RegEx - номера совпадений переменной длины

Я пытаюсь разобрать документ, в котором есть ссылочные номера.

Текст текстового текста {4: 2} более невероятный текст {4: 3} намного позже {222: 115} и еще немного текста.

Ссылки всегда будут заключены в скобки, и между ними всегда будет двоеточие. Я написал выражение, чтобы найти их.

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

Однако это, очевидно, не соответствует моменту, когда вы сталкиваетесь с двух-трехзначным числом, и мне трудно понять, что это должно быть. Никогда не будет более трех цифр {999: 999} - максимальный размер для обработки.

У кого-нибудь есть идея правильного выражения для обработки этого?

Ответ 1

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

попробуйте добавить плюс (ы)

Ответ 2

Какой движок регулярного выражения вы используете? Большинство из них будут поддерживать следующее выражение:

\{\d+:\d+\}

\d является фактически сокращением для [0-9], но важной частью является добавление +, что означает "один или несколько".

Ответ 3

Попробуйте следующее:

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

{1,3} означает "соответствие между 1 и 3 предыдущих символов".

Ответ 4

Вы можете указать, сколько раз вы хотите, чтобы предыдущий элемент соответствовал, используя {min,max}.

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

Кроме того, вы можете использовать \d для цифр вместо [0-9] для большинства вариантов регулярных выражений:

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

Вы также можете рассмотреть возможность экранирования внешних { и }, чтобы они поняли, что они не являются частью определения повторения.

Ответ 5

{\ d *:\d *} должно работать.

* означает совпадение 0 или более из предыдущих вхождений, что является цифрой.