Можно ли использовать сравнение в шаблоне регулярных выражений? Я хочу проверить, является ли недавняя согласованная группа числом greater than
. Это шаблон: size=(\d+)
, и я хочу посмотреть, если (\d+)>200
, тогда верните true.Операторы сравнения в regex
ответ
Вы не можете сделать это с тем же синтаксисом, но то, что вы после этого можно с более сложное выражение, как:
более 200:
([1-9]\d+|(?!200)[2-9])\d\d
Включают 200:
([1-9]\d+|[2-9])\d\d
Однако, если вы подходите к другим (и большим) номерам, это будет неуправляемо.
Вы бы сделали все, чтобы соответствовать всем номерам, а затем проведите по ним, чтобы выполнить проверку > 200
, и удалите те, которые не соответствуют.
Примечание. Вышеприведенные регулярные выражения просто показывают, что совпадающие числа больше 200 возможны в чистом регулярном выражении. Однако не рекомендуется, и более сложные/переменные числа будут неработоспособными.
О.П. упоминается в комментариях, что они хотели бы, чтобы соответствовать > 30*1024*1024
, который > 31457280
Во имя доказав, почему регулярное выражение боли, я написал нужный шаблон:
\b((3[1-9][4-9][5-9][7-9][2-9][8-9]\d+)|(3[1-9][4-9][5-9][7-9][3-9]\d{2,})|(3[1-9][4-9][5-9][8-9]\d{3,})|(3[1-9][4-9][6-9]\d{4,})|(3[1-9][5-9]\d{5,})|(3[2-9]\d{6,})|(?!31457280)(4\d{7,}))\b
(не очень красиво!)
Нет, это не возможно, цель регулярных выражений, чтобы соответствовать не как выражения программировать с ним
- 1. Операторы сравнения в C++
- 2. Операторы сравнения для символов
- 3. Операторы сравнения Ruby? == vs. ===
- 4. Операторы сравнения строк
- 5. Операторы сравнения! == против 0
- 6. Множественные операторы сравнения
- 7. Операторы сравнения Overpass-api
- 8. Операторы сравнения PowerShell
- 9. Параметры Haskell - операторы сравнения
- 10. Операторы сравнения C++
- 11. Цепные Перегруженные операторы сравнения
- 12. операторы сравнения вызовов в Haskell
- 13. операторы сравнения precendence в Bison
- 14. Операторы динамического сравнения в PHP
- 15. JQuery/JavaScript Операторы сравнения "===" и "=="
- 16. Операторы сравнения строк сценария Bash
- 17. Операторы сравнения VBScript не работают?
- 18. Операторы сравнения JavaScript не работают
- 19. Операторы сравнения для строк C
- 20. Операторы сравнения POSTGRESQL по тексту
- 21. Если операторы сравнения целых чисел
- 22. Контейнеры reference_wrappers (требуется операторы сравнения?)
- 23. предпочтительные операторы сравнения языка Python
- 24. Класс шаблона, реализующий операторы сравнения
- 25. Regex: Соответствующие арифметические операторы и двухсимвольные операторы
- 26. Как работают операторы сравнения в java?
- 27. сравнения в PHP с помощью == и === операторы
- 28. Множественные операторы сравнения в булевом выражении JavaScript
- 29. операторы сравнения в ms sql server
- 30. Regex сравнения значений
Это уже не регулярное выражение, это язык программирования. Итак: нет. – deceze
Не так, я думаю. Но вы можете сопоставить все, что до 200. – putvande
Вы можете эмулировать это с помощью чего-то вроде '([0-9] {2,} | [2-9]) [0-9] [0-9]' – SmokeyPHP