За последние 24 часа нас посетили 15016 программистов и 1764 робота. Сейчас ищут 1494 программиста ...

Почему обрабатывается последняя точка в регулярном выражении

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

  1. Bruha1991

    Bruha1991 Новичок

    С нами с:
    23 дек 2015
    Сообщения:
    5
    Симпатии:
    0
    Подскажите пожалуйста, никак не могу понять Почему обрабатывается последняя точка в регулярном выражении

    Код (PHP):
    1. preg_match("/([^\s]+)\s+([^\s.])[^\s.]*(?:\s|\.)([^\s.])[^\s.]*/",$income_str,$out_arr);
    2. print_r($out_arr); 
    Сама строка "фамилия и.о."

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Почему обрабатывается последняя точка в регулярном выраж

    наоборот же. необрабатывается получается

    Добавлено спустя 1 минуту 28 секунд:
    Re: Почему обрабатывается последняя точка в регулярном выражении
    вообще чтото наворотили. какая изначальная задача регулярки? что на входе и что хотели сматчить?
     
  3. Bruha1991

    Bruha1991 Новичок

    С нами с:
    23 дек 2015
    Сообщения:
    5
    Симпатии:
    0
    Re: Почему обрабатывается последняя точка в регулярном выраж

    Есть файл(ну это не важно)
    там должны подходить под такие типы строк:
    фамилия имя отчество
    фамилия и о
    фамилия и.о.
    Проверял работу данного РВ на строке "фамилия и.о."- работает. Но почему обр-ся посл. точка сам не пойму, так как
    РВ составил не я.
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. /^\S+?\s\S+?[\s\.]\S+\.?$/ 
    Добавлено спустя 55 секунд:Re: Почему обрабатывается последняя точка в регулярном выраженииа ваша регулярка матчит и когда только фамилия. и когда есть слово после отчества даже... некорректная в общем