RegEx - відповідні номери змінної довжини


131

Я намагаюся проаналізувати документ, на якому розміщені посилання на ньому.

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

Посилання завжди будуть загорнуті в дужки, і між ними завжди буде двокрапка. Я написав вираз, щоб їх знайти.

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

Однак це очевидно провалюється в той момент, коли ви натрапите на дво-або трицифрове число, і у мене виникають труднощі з'ясувати, що це повинно бути. Ніколи не буде більше ніж 3 цифри {999: 999} - це максимальний розмір, з яким потрібно мати справу.

Хтось має уявлення про правильний вираз для вирішення цього питання?


8
Навіть якщо ОП не байдуже, мені цікаво: Чому протилежно це питання? Я не бачу нічого поганого в цьому.
Джон,

3
@John: Чомусь люди люблять спростовувати питання, на які є прості відповіді, особливо в regexтезі.
CanSpice

1
Врешті-решт це питання отримало вищий ранг у google, і я знайшов свою відповідь у цьому.
Jasonfish

Відповіді:


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

спробуйте додати плюси


Це зайняло мені занадто довго, щоб знайти ... дякую за цю інформацію!
рівень42

76

Який двигун регексу ви використовуєте? Більшість з них підтримуватиме таке вираження:

\{\d+:\d+\}

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


31

Спробуйте це:

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

Ці {1,3}кошти «збігаються між 1 і 3 з попередніх символів».


8

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

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

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

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

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


2
Ні , будь ласка , не будете робити це з більшістю регулярних виразів ароматів, якщо ви не любите неєвропейські цифри: fileformat.info/info/unicode/category/Nd/list.htm
Ксанатос

1

{\ d *: \ d *} має працювати.

* означає відповідність 0 або більше попередніх подій, що є цифрою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.