Выражения регулярных выражений для сопоставления сравнений - PullRequest
0 голосов
/ 29 марта 2012

Можно ли создать регулярное выражение, которое соответствует сравнению, например, меньше или больше чем? Например, сопоставьте все значения в долларах менее 500 долларов.

Один из способов, которым я бы использовал это, был бы в интернет-магазинах, которые перечисляют много товаров на одной странице, но не предоставляют способ сортировки по цене. Я нашел страницу поиска по расширению регулярных выражений для Chrome и пытаюсь выяснить, есть ли способ использовать регулярные выражения для сопоставления любых строк на странице, начинающихся со знака доллара, за которым следует любое число меньше указанного числа.

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Это должно работать для вас \$[1-4]?\d?\d\b.

Пояснение:

r"""
\$       # Match the character “$” literally
[1-4]    # Match a single character in the range between “1” and “4”
   ?        # Between zero and one times, as many times as possible, giving back as needed (greedy)
\d       # Match a single digit 0..9
   ?        # Between zero and one times, as many times as possible, giving back as needed (greedy)
\d       # Match a single digit 0..9
\b       # Assert position at a word boundary
"""
1 голос
/ 29 марта 2012

Это может сделать то, что вам нужно: ^(\$[1-4]?\d?\d)$.Это будет соответствовать любому значению от $1 до $499.

Как упоминалось выше, если вы хотите сопоставить даже десятичные значения, вы можете использовать что-то вроде этого: ^(\$[1-4]?\d?\d(\.\d{2})?)$.При этом числовая проверка в идеале должна выполняться с использованием реальных математических операций, а не регулярных выражений.

0 голосов
/ 29 марта 2012

Редактировать: это слишком сложно, но оно также будет соответствовать любому значению, строго меньшему, чем 500

\$[1-4]\d{2}(\.\d{2})?$|\$\d{1,2}(\.\d{2})?$

, если вам также необходимо соответствовать $500, добавьте еще |\$500(\.00)?$

Это соответствует:

\$            the dollar symbol
[1-4]         followed by a digit between 1 and 4
\d{2}         followed by exactly 2 digits
(\.\d{2})?    optionally --> ()? followed by a dot --> \. and exactly 2 digits
$             followed by end of line (may be replaced with \b for word boundaries)
|             or
\$\d{1,2}     the dollar symbol followed by any two digits
(\.\d{1,2})?$ again optionally followed by cents, followed by end of line
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...