Я пытаюсь создать регулярное выражение, которое может идентифицировать число в пределах интервала в строке в VBA. Иногда у этого числа есть символы вокруг него, иногда нет (несогласованная нотация от поставщика). Выражение должно идентифицировать, что 1413 в трех приведенных ниже примерах находится в пределах диапазона 500-2000 (или, альтернативно, это не в диапазоне чисел 0-50 или 51-499).регулярное выражение с возможными символами до и после номера VBA
Пример:
Test 12/2014. Tot.flow:1413 m3
илиTest 12/2014. Tot.flow:1413m3
илиTest 12/2014. Tot.flow: 1413
эти строки имеют некоторые идентификаторы:
- всегда будет С Olon перед номером
- может быть белое пространство между двоеточием и номером
- может быть белое пространство между числом и
m3
m3
не обязательно всегда присутствует, и если нет, то количество находится в конце строки
до сих пор, что у меня в попытке сделать регулярное выражение, найти диапазон число ([5-9][0-9][0-9]|[1]\d{3}|2000)
, но это соответствует все трехзначные числа, а (2001 дает матч на 200) , Тем не менее, я понимаю, что я упускаю пару концепций, чтобы достичь конечной цели здесь. Я предполагаю, что мои проблемы являются следующие:
- Как начать интервал на то, что не ноль (найдено много вопросов на интервалах, начиная с нуля)
- Как принимать во внимание различия в обозначениях и для
flow:
иm3
?
Я только заинтересован в проверке того, что число лежит в пределах диапазона номеров. Это приводит меня в бешенство, вся помощь очень ценится!
Вы можете просто извлечь номер с 'regExp.Replace()' с помощью '^ *:. \ s * (\ d +). * $ 'и' $ 1', а затем используйте регулярное сравнение целочисленного числа, чтобы проверить, находится ли значение в ожидаемом диапазоне. –
@stribizhev Не могли бы вы дополнительно объяснить замену '$ 1'? – Holene
'$ 1' - это обратная ссылка на текст, захваченный первой группой захвата (т. Е. Подшаблон' (...) '). –