Помогите с регуляркой

Discussion in 'PHP' started by S1ash, 16 Aug 2010.

  1. S1ash

    S1ash Banned

    Joined:
    19 Nov 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    -10
    есть строка вида
    Вход (ID: 1496, 1497)
    или Вход (ID: 1496, 1497, 1744, 71452, 412)
    как выдрать из неё числа?
    заранее премного благодарю за помощь
     
  2. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    "#ID: (\d{3,5}).?{2,5}#"
     
    #2 SHiNiGaMi, 16 Aug 2010
    Last edited: 16 Aug 2010
    1 person likes this.
  3. S1ash

    S1ash Banned

    Joined:
    19 Nov 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    -10
    премного благодарен
    еще нескромный вопрос
    как это на php будет выглядеть?
     
  4. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    preg_match("#ID: (\d{3,5}).?{2,5}#",$text,$matches);
    в $matches[1] .. $matches[5] цифры будут
     
    #4 SHiNiGaMi, 16 Aug 2010
    Last edited: 16 Aug 2010
  5. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    Что за бред? Мало того что \D - это не числа, так ещё и выражение синтаксически неправильное (+{3,5} - пять баллов).
    Вы бы проверяли прежде чем советовать.
     
  6. S1ash

    S1ash Banned

    Joined:
    19 Nov 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    -10
    хе.. дык не пашет
    и ни по одному конструктору регулярок не проходит =(
     
  7. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    сорри, чето туплю
     
  8. S1ash

    S1ash Banned

    Joined:
    19 Nov 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    -10
    паттерн /[0-9.]{1,9}/ находит первое число
    а как бы остальные узнать?
     
  9. S1ash

    S1ash Banned

    Joined:
    19 Nov 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    -10
    сам отвечу
    preg_match_all
    =)
     
  10. Grayzer

    Grayzer New Member

    Joined:
    10 Aug 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Если кодишь на php, то почему бы это не заменить строковыми функциями? Работать быстрее будет, да и гемороя меньше.
     
  11. M@rkus

    M@rkus Banned

    Joined:
    25 Jul 2010
    Messages:
    43
    Likes Received:
    5
    Reputations:
    0
    PHP:
    <?php
    $str 
    "Вход (ID: 1496, 1497)";
    $str preg_replace('#([a-zA-Zа-я:() ])#i'''$str);
    $str explode(','$str); foreach($str as $n) echo $n."\r\n";
    ?>
     
  12. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    PHP:
    <?php
    $str 
    'Вход (ID: 1496, 1497, 1744, 71452, 412)';

    if(
    preg_match_all('#\d+#',$str,$m))
    print_r($m);
    ?>
    результат: