Помогите с регуляркой. сложный случай.

Discussion in 'PHP' started by ttt0z, 7 May 2014.

  1. ttt0z

    ttt0z Member

    Joined:
    18 Nov 2007
    Messages:
    60
    Likes Received:
    10
    Reputations:
    -5
    Есть текст:
    (слово1|слово2|слово3) (слово4)? искомое_слово любой текст

    то есть первое слово это любое из трех известных нам,
    дальше может быть слово4, а может его и не быть,
    дальше искомое слово, дальше неизвестный тект,

    как составить регулярку что бы вытащить искомое слово????
     
  2. ph1l1ster

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

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    Code:
    echo "(слово1|слово2|слово3) (слово4)? искомое_слово любой текст" | awk '{ print $3 }'
    не катит? :D
     
  3. FunOfGun

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

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Code:
    >>> re.findall("(?:(?:слово1)|(?:слово2)|(?:слово3))(?: слово4)? (\S+)", "слово3 слово4 искоиое_слово текст")
    ['искоиое_слово']
    >>> re.findall("(?:(?:слово1)|(?:слово2)|(?:слово3))(?: слово4)? (\S+)", "слово3 искоиое_слово текст")
    ['искоиое_слово'] 
    писалось под питон, но вроде регулярка будет совместима с php
     
  4. ttt0z

    ttt0z Member

    Joined:
    18 Nov 2007
    Messages:
    60
    Likes Received:
    10
    Reputations:
    -5
    надо код с функцией preg_match
    после искомого словма может быть пробел или точка или запятая
     
  5. FunOfGun

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

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    ну держи http://ideone.com/4uEuF5
     
  6. ttt0z

    ttt0z Member

    Joined:
    18 Nov 2007
    Messages:
    60
    Likes Received:
    10
    Reputations:
    -5
    FunOfGun, сделал по другому, но спасибо, твой пост помог!
     
  7. buxmanager

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

    Joined:
    1 Apr 2009
    Messages:
    613
    Likes Received:
    229
    Reputations:
    69
    смс, аос, ответный код....получилось?)