регулярка

Discussion in 'PHP' started by rubik-nerubik, 30 Sep 2009.

  1. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    Кто шарит?)
    ваще столько раз сталкивался и не могу разобраться никак)))
    есть у кого норм по ней инфа
    так к чему я клоню

    нужна регулярка, которая выводит по маске, типа есть файл:

    1122212121
    1212313131
    nach192.168.1.1konec
    48348348
    dffsdfsdfsdfdsf
    .ewr.we.r.wer...
    nach192.168.1.5konec
    werewr34324324
    234234


    надо бы вывести:
    192.168.1.1
    192.168.1.5


    выручайте)
     
  2. demond

    demond Member

    Joined:
    5 Nov 2008
    Messages:
    101
    Likes Received:
    22
    Reputations:
    5
    Code:
    #!/usr/bin/perl
    $\ = $/;
    open(F, "test.txt") or die"$!";;
    while(<F>)
     { 
    print $1 if(/.*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*/); 
    }
     close F;
     
  3. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    еммм) не уточнил) я про php имел ввиду
     
  4. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Регулярка по сути таже...
    Code:
    /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/
    тут можеш потестить http://gskinner.com/RegExr/
     
    #4 Gray_Wolf, 30 Sep 2009
    Last edited: 30 Sep 2009
    2 people like this.
  5. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    Code:
    if (preg_match ("/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/",$fio,$fio1)) {
        print "$fio1[0]";
    } else {
        print "A match was not found.";
    }
    вот что вышло, как сделать чтобы все находил?
    а то показ тока первый
     
  6. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    http://gskinner.com/RegExr/ как тут вытащить то что я набросал?)
     
  7. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    ааа берёмсч preg_match_all
     
  8. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Можно укоротить регулярку до вида
    Code:
    /((\d{1,3}\.){3}\d{1,3})/
    
    Более продвинутая регулярка - http://www.pcre.ru/examples/links/text/31/
     
    1 person likes this.
  9. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    емана одни косяки, как сделать чтобы он проверял во всем тексте и выводил всё! а не один первый встречившийся.
     
  10. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    PHP:
    if (preg_match ("/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/",$fio,$fio1)) {
    for (
    $i=0$i<=кол-во_строк$i++) {
        print 
    "$fio1[$i]";
    }
    } else {
        print 
    "A match was not found.";
    }
     
  11. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    а лучше количество элементов в массиве.....
     
  12. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    PHP:
    preg_match_all()