Согласно Создайте регулярное выражение для соответствия произвольному числовому диапазону и после создания такого регулярного выражения для вашего примера в Regex_For_Range :
\b0*(1[1-9][0-9]|[2-9][0-9]{2}|1[0-9]{3}|2[01][0-9]{2}|22[0-2][0-9]|223[0-4])\b
выполнит трюк.
Процесс будет (по-прежнему после этого генератора регулярных выражений):
Сначала перейдите в равные диапазоны длин:
blockquote>110 - 999 1000 - 2234
Во-вторых, перейдите в диапазоны, которые дают простые регулярные выражения:
blockquote>110 - 199 200 - 999 1000 - 1999 2000 - 2199 2200 - 2229 2230 - 2234
Поверните каждый диапазон в регулярное выражение:
1[1-9][0-9] [2-9][0-9]{2} 1[0-9]{3} 2[01][0-9]{2} 22[0-2][0-9] 223[0-4]
Свернуть смежные степени 10: 1 [1-9] [0-9] [2-9] [0-9] {2} 1 [0-9] {3 } 2 [01] [0-9] {2} 22 [0-2] [0-9] 223 [0-4]
Объединение приведенных выше выражений дает:
blockquote >0*(1[1-9][0-9]|[2-9][0-9]{2}|1[0-9]{3}|2[01][0-9]{2}|22[0-2][0-9]|223[0-4])
Далее мы попытаемся разложить общие префиксы с помощью дерева: проанализировать дерево на основе префиксов регулярных выражений:
blockquote>. 1 [1-9] [0-9] + [0-9]{3} + [2-9] [0-9]{2} + 2 [01] [0-9]{2} + 2 [0-2] [0-9] + 3 [0-4]
Поворот дерево разбора в выражение регулярных выражений:
blockquote>0*(1([1-9][0-9]|[0-9]{3})|[2-9][0-9]{2}|2([01][0-9]{2}|2([0-2][0-9]|3[0-4])))
Мы выбираем более короткий, чем наш re sult.
blockquote>\b0*(1[1-9][0-9]|[2-9][0-9]{2}|1[0-9]{3}|2[01][0-9]{2}|22[0-2][0-9]|223[0-4])\b