За последние 24 часа нас посетили 20266 программистов и 1562 робота. Сейчас ищут 1865 программистов ...

ИЛИ в регулярных выражениях

Тема в разделе "Регулярные выражения", создана пользователем swodniw, 7 дек 2010.

  1. swodniw

    swodniw Активный пользователь

    С нами с:
    4 дек 2010
    Сообщения:
    15
    Симпатии:
    0
    Подскажите как правильно использовать метасимвол "|"
    Есть страница с которой необходимо извлечь имена

    <p>Есть парень Артур</p>
    <p>Есть смелый парень Мирон</p>

    Можно, конечно было бы написать

    /<p>Есть\s.*парень\s(.+)<\/p>/

    но проблема в том, что код гораздо больше и если использовать ".*" то результата нет

    Как с помощью "|" решить данную задачу

    Проблема в том, что я не знаю имен, рег.выр. как раз и должны выбрать эти имена

    Могу ли я написать:

    /<p>(?:Есть\s)|(?:Есть\s.*)парень\s(.+)<\/p>/

    Перечисляя варианты:
    (?:Есть\s) - <p>Есть парень Артур</p>
    (?:Есть\s.*) - <p>Есть смелый парень Мирон</p>

    Ну а РВ выберет имена и занесет их в массив
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Примерно так (не проверял):

    Код (Text):
    1. /(?=Есть)(?:.+?парень[ ]+?)([А-Я][ а-я-]+?)/
     
  3. swodniw

    swodniw Активный пользователь

    С нами с:
    4 дек 2010
    Сообщения:
    15
    Симпатии:
    0
    Вот это заработало

    /(?=Есть)(?:.+?парень[ ]+?)([А-Я][а-я]+)/

    Спасибо Apple, попробую на основном коде
     
  4. swodniw

    swodniw Активный пользователь

    С нами с:
    4 дек 2010
    Сообщения:
    15
    Симпатии:
    0
    И все же на моем коде у меня не получается,
    выставлю часть кода в оригинале:

    1)<a title="проверка" id=r1 href=javascript:OpenNameProv(986564)><u>Петров</u></a></b>
    1)Иванов</b>

    Соответственно имен много и выбирать их надо в один массив, дабы не потерять порядок