ФорумПрограммированиеPHP для идиотов → Помогите с Regex'ом

Помогите с Regex'ом

  • Karlovich

    Сообщения: 39 Репутация: N Группа: Кто попало

    Spritz Июль 10, 2010, 1:40 д.п.

    Необходимо находить версии в тексте
    Например: 1.0 или 2.0 или 1.2.1 или 1.3.4.1 может быть и так 1.12 или 1.43 или даже 2.412
    сейчас делаю так
    #[0-9.]{3,9}#

    НО если в тексте встречается год то конфликтит.
    Дата в тексте не встречается только года от 2008-10

    Думал может фильтровать регуляркой только года, но не получается
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Июль 10, 2010, 2:13 д.п., спустя 33 минуты 2 секунды

    #[0-9\.]{3,9}#
    Сапожник без сапог
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz Июль 10, 2010, 9:29 д.п., спустя 7 часов 16 минут 6 секунд

    $pattern = '/(\d+\.){1,}(\d+)/';

    $testString = '1.2.3 34.21 1.1.2.0 2007 2008 1.327';
    preg_match_all($pattern, $t, $pockets);
    var_dump($pockets[0]);
    /*
    array(4) {
    [0]=>
    string(5) "1.2.3"
    [1]=>
    string(5) "34.21"
    [2]=>
    string(7) "1.1.2.0"
    [3]=>
    string(5) "1.327"
    }
    */
    Work, buy, consume, die
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Июль 10, 2010, 10:21 д.п., спустя 52 минуты 28 секунд

    Nyaah, твой немногим строже моего)
    Сапожник без сапог
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz Июль 10, 2010, 10:59 д.п., спустя 37 минут 43 секунды

    В регэкспах в квадратных скобках не обязательно эскейпировать точку, твоя версия неичем от версии топикстартера не отличается =)

    Плюс такая фигня:
    $test = 'Версия 1.2.3. тарам пам пам. Пурурум 12. Тыщ тададыщ 2010. Тара-ра 1.4 2009 тада.';

    // моя версия:
    preg_match_all('/(\d+\.){1,}(\d+)/', $t, $pockets);
    var_dump($pockets[0]);
    /*
    array(2) {
    [0]=>
    string(5) "1.2.3"
    [1]=>
    string(3) "1.4"
    }
    */

    // дуд:
    preg_match_all('#[0-9\.]{3,9}#', $t, $pockets);
    var_dump($pockets[0]);
    /*
    array(5) {
    [0]=>
    string(6) "1.2.3."
    [1]=>
    string(3) "12."
    [2]=>
    string(5) "2010."
    [3]=>
    string(3) "1.4"
    [4]=>
    string(4) "2009"
    }
    */

    // изначальная:
    preg_match_all('#[0-9.]{3,9}#', $t, $pockets);
    var_dump($pockets[0]);
    /*
    array(5) {
    [0]=>
    string(6) "1.2.3."
    [1]=>
    string(3) "12."
    [2]=>
    string(5) "2010."
    [3]=>
    string(3) "1.4"
    [4]=>
    string(4) "2009"
    }
    */
    Work, buy, consume, die
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Июль 10, 2010, 11:09 д.п., спустя 9 минут 49 секунд

    В регэкспах в квадратных скобках не обязательно эскейпировать точку

    новость :)
    ну логически это правильно, но не проверял на пхп))

    а полечить от правой можно trim($str, "."); ))

    да хуйня это все, я в душ )
    Сапожник без сапог
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz Июль 10, 2010, 11:15 д.п., спустя 5 минут 42 секунды

    а полечить от правой можно trim($str, "."); ))
    А от захвата всех цифр в тексте как отлечить?
    удачно помыться )
    Work, buy, consume, die
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Июль 10, 2010, 11:42 д.п., спустя 27 минут 4 секунды

    ололо Дуд тупит))
    Тема в пхп для профи гыгыгы
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Июль 10, 2010, 11:45 д.п., спустя 3 минуты 3 секунды

    SpartakuS, да, нях прав и чо?) я же ленивый, поправил 1 символ и забил на тему, я даже задание то толком не смотрел :D

    помылсо, а ахуенна!
    Сапожник без сапог
  • Karlovich

    Сообщения: 39 Репутация: N Группа: Кто попало

    Spritz Июль 10, 2010, 1:36 п.п., спустя 1 час 51 минуту 10 секунд

    Nyaah спасибо! реально помог
    Дуд ну без тебя ни в отдном топике)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!