Пример взят отсюда http://www.phpclub.ru/detail/article/regexp_1 есть текст PHP: фамилия имя отчество фамилия и о фамилия и.о. Сама регулярка для поиска всех вхождений. PHP: preg_match("/([^\s]+)\s+([^\s.])[^\s.]*(?:\s|\.)([^\s.])[^\s.]*/",$income_str,$out_arr); print_r($out_arr); никак не могу понять почему эта последовательность PHP: [^\s.][^\s.]* может соотв-ть PHP: о. или просто PHP: о
[^\s.] - не пробел и не точка. буква т.е. разберём по частям /([^\s]+)\s+([^\s.])[^\s.]*(?:\s|\.)([^\s.])[^\s.]*/ ([^\s]+) - подряд идущие буквы - берём фамилию \s+ - один или несколько пробелов - нас не интересуют ([^\s.]) - одна буквы - берём инициал имени [^\s.]* - может буквы и дальше быть, а могут и не быть, нам пофиг, брать не будем (?:\s|\.) - или пробел или точка - инициал/имя закончились, нам пофиг, пропускаем ([^\s.])[^\s.]* - инициал отчества, так же как и инициал имени - берётся только первая буква
ООосподи счасть то каое спасибо Gromo про имя ([^\s.]) [^\s.]* ---етить колотить я забыл что звездочка озночает и ноль тоже )) Слона и не заметил про отчество ([^\s.])[^\s.]* тут в самом конце тоже стало понятно.. Единственное жаль условие четко не говорит от том что может быть и точка поэтому конец можно было бы сделать таким ([^\s.])[^\s.]*\.* или как-то так ([^\s.])[^\s.]*(?:\s|\.)