2015-02-13 4 views
0

У меня есть этот текст:
Проверьте число больше, чем 4

HP 400 PROONE İ3-4130T 4GB 500GB 19.5" OB DO 792,40 679,20 582,98 USD  1.462,70 18 100+ 

Последнее слово 100+ я хочу, чтобы проверить, если 100 больше, чем 4. Как я могу это сделать?

+0

Замечания были удалены модераторами, в том числе некоторые полезные. Насколько я помню, вы упоминали название используемого вами инструмента (который я уже забыл). Эта информация должна быть в вопросе. –

ответ

3

В качестве регулярного выражения, любое число с более чем одной цифрой больше, чем 4, и любая одна цифра в диапазоне 5-9.

[1-9][0-9]|[5-9] 

В некоторых регулярных выражениях диалектов \d доступен как синоним [0-9] но жертвоприношения ясности для очень ограниченных успехов в данном конкретном контексте (и вы не говоря уже о каком-либо конкретном инструменте или диалект в вашем вопросе, но я предположили, что у вас есть доступ к оператору чередования |).

Регулярные выражения - исключительно плохой выбор для чего-либо, связанного с арифметикой; вам следовало бы рассмотреть альтернативный подход, если это вообще возможно.

+0

'\ d' довольно принято как' [0-9] '. Ясность здесь не проблема. Кроме того, ваше регулярное выражение [сбой] (https://regex101.com/r/vZ4zN0/1). – Qix

+0

Неудача как? Я вижу, что это не соответствует числам, меньшим 5, при сопоставлении (частей) больших чисел, которые, казалось, были задачей OP. Конечно, вопрос очень плохо сформулирован. – tripleee

+0

Правда. Снято вниз. – Qix

1

использование этого:

(([1-4]\d|[5-9])\d*)\+$ 

DEMO

+0

Благодарим вас за ответ. похоже, это сработает. Я попробую. – nikel

+0

[Нет] (https://regex101.com/r/vX3dU0/2) – Qix

+0

thx @Qix. см. обновленный. –

2

Это регулярное выражение, которое вы, вероятно, захотите.

([4-9]\+|\d{2,}\+) 

Добавить любые флаги вам нужно (т.е. gm).

Это регулярное выражение будет only match the numbers, которые имеют длину одного символа и являются символами 5 до 9 или номерами длиной не менее 2 символов.

Для более архаичных регулярных выражений системы, вы можете использовать расширенную версию:

([5-9]\+|[0-9][0-9]+\+) 

который achieves the same thing.

1

Ответ на тройной прием прекрасен, если вы просто пытаетесь найти номер больше 4, но он не найдет того, что вы ищете сам по себе. Для этого вам нужно явно указать, что это последнее число перед концом строки и имеет знак плюса (+). Используйте это в качестве шаблона:

\d{2,}?\+$|[5-9]\+$ 

Это делает два поиска:

Поиск One:

\d{2,}?\+$ 

поиски Этот код по крайней мере две цифры до плюс (+) символ и конец строки ($). Он может быть как 10, так и больших, если вы считаете, что это целое число и не использует десятичные точки.

Поиск Два:

[5-9]\+$ 

Этот код ищет любое число между 5 и 9 до символа плюс (+) и конец строки ($).

Путь регулярного выражения, как правило, выполняется, так это то, что он сначала проверит поиск, а затем, если он не получит никаких ударов, он проверит для поиска два. Вам не нужно индивидуально выполнять эти поиски, если вы объединяете их вместе, разбивая их на символ трубы (|)