Проблема №1. Соответствие числам

  Юрий  | 

  Обновл. 29 Мар 2021  | 

 4536

 ǀ   4 

На первый взгляд, написание регулярных выражений для соответствия числам не должно стать неподъемной задачей, не так ли?

У нас есть метасимвол \d для соответствия любой цифре, и всё, что нам нужно сделать — это добавить соответствие десятичной точке, верно? С простыми числами это легко, но при работе с научными или финансовыми значениями вам придется иметь дело с положительными и отрицательными числами, значащими цифрами, показателями степени и даже с различными представлениями (например, запятая, используемая для разделения тысяч и миллионов).

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

Проблема №1: Соответствие числам
Задание Текст
Соответствовать 3.14529 To be completed
Соответствовать -255.34 To be completed
Соответствовать 128 To be completed
Соответствовать 1.9e10 To be completed
Соответствовать 123,340.00 To be completed
Пропустить 720p To be completed

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

Для примера, приведенного выше, выражение ^-?\d+(,\d+)*(\.\d+(e\d+)?)?$ будет соответствовать строке, которая начинается с необязательного отрицательного знака, одной или нескольких цифр, после которых необязательно следует запятая и еще несколько цифр, за которыми следует необязательная дробная часть значения, состоящая из точки, одной или нескольких цифр и необязательного показателя степени (символ е), за которым следует еще несколько цифр.

Это не единственно правильное решение, у вас может быть и альтернативный вариант.

Решите задание, чтобы перейти к следующему уроку, либо смотрите Решение.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (9 оценок, среднее: 5,00 из 5)
Загрузка...

Комментариев: 4

  1. graviton:

    Не ленивый вариант может быть таким:

    [+-]?((,\d{3,})|(\d+))+(\.\d+(e[+-]?\d+)?)?\b

    Найти последовательность, которая составлена как правильное число, то есть:
    может стоять + или — в начале
    октеты чисел могут быть разведены ,
    число может быть дробным
    число может быть в экспоненциальной форме
    является законченным словом (после него идет либо пунктуация либо пробел либо конец строки)

  2. grafvontee:

    Самый короткий вариант ответа: \d$
    Тут короче некуда

  3. Stikkerrr:

    .*(?!p) мой вариант соответствует всем строчкам и пропускает последнюю(судя по галочкам и зеленым символам), но кнопка продолжить не работает.

  4. Sergey:

    Да, регулярки разбирать — тот ещё капец 🙂

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *