Выбрать нужный вариант [вопрос]

Тема в разделе "Регулярные выражения", создана пользователем pastuhoff, 4 авг 2012.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. pastuhoff

    pastuhoff Создатель

    Регистр.:
    11 июл 2012
    Сообщения:
    49
    Симпатии:
    6
    Подскажите, плз, как можно из данных вида
    created: 2005.07.06
    paid-till: 2012.07.06
    free-date: 2012.08.06
    получить
    2012.08.06
    Но если поля "free-date" нету, тогда получить данные из "paid-till"
    2012.07.06
    Это нужно сделать в одном регулярном выражении.
     
  2. xpert13

    xpert13 <(*_*)>

    Moderator
    Регистр.:
    7 ноя 2008
    Сообщения:
    182
    Симпатии:
    453
    paid-till всегда есть, а free-date может быть, а может и не быть? Или paid-till тоже может быть, а может и не быть? И данные всегда идут в таком порядке, или порядок произвольный?
     
  3. pastuhoff

    pastuhoff Создатель

    Регистр.:
    11 июл 2012
    Сообщения:
    49
    Симпатии:
    6
    Уже решил проблему так (там 4 пробела в ответе хуиза на самом деле)
    Код:
    /(?<=free-date:|paid-till:) {4}([.0-9]{10})(?!\s*free-date)/
     
  4. Oleg_Ci

    Oleg_Ci Создатель

    Регистр.:
    11 окт 2009
    Сообщения:
    25
    Симпатии:
    7
    Возможно мелочь, но - точка озночает любой символ, такчто заэкранировать надобыло точку :) [\.0-9]
     
  5. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    776
    Симпатии:
    230
    В квадратных скобках точку экранировать не требуется, она там выступает именно как точка, а не любой символ.
     
Статус темы:
Закрыта.