[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения
Страницы: 1, 2
Котовский
Доброго всем времени суток....подскажите как сделать поиск с помощью регулярных выражений
фамилии имени отчества в тексте...
Форматы:
Фамилия И.О.
Фамилия И О
Фамилия Имя Отчество
Фамилия Имя
Желательно все в одном выражении
Zzepish
'/([a-zа-я]{2,}\s[a-zа-я]{2,}\s[a-zа-я]{2,}|[a-zа-я]{2,}\s[a-zа-я]{1}\.[a-zа-я]{1}\.| [a-zа-я]{2,}\s[a-zа-я]{1}\s[a-zа-я]{1}|[a-zа-я]{2,}\s[a-zа-я]{2,})/ui'
Игорь_Vasinsky
Zzepish
ну да laugh.gif

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Котовский
<?PHP
$income_str="Так как регистрационное имя пользователя Должно состоять из латинских букв, а также цифр, то надо Попов А.Ю. написать символьный Кривошеев Егор Александрович класс, который будет удовлетворять этому условию: [a-zA-Z0-9] в этот символьный класс входит три интервала, первый интервал a-z (все символы от маленькой буквы a до маленькой буквы z), второй интервал A-Z (аналогично, но с большими буквами), третий интервал 0-9 (цифры от 0 до 9). Мы описали только одну букву, из которой может состоять регистрационное имя, но таких букв может быть... а теперь как раз надо ответить на вопрос, сколько таких букв может быть? Да сколько угодно, скажете вы, а я скажу, что вы неправы";
preg_match_all(" /([А-Я][а-я]{2,}\s[А-Я][а-я]{2,}\s[А-Я][а-я]{2,}|[А-Я][а-я]{2,}\s[А-Я]{1}\.[А-Я]{1}\.| [А-Я][а-я]{2,}\s[А-Я]{1}\s[А-Я]{1}|[А-Я][а-я]{2,}\s[А-Я][а-я]{2,})/",$income_str,$out_arr);
print_r($out_arr);
?>



Он почему то 2 раза выводит одно и то же :unsure:
Игорь_Vasinsky
Цитата
Иванов И.И.
Иванов Иван Иванович
Катеров-Иванов Иван Иваныч
Иванов И И


#[-а-яё]{2,} ([а-яё]+[\.]*\s*[-а-яё]+[\.]*)#ius


Array
(
[0] => Array
(
[0] => Иванов И.И.
[1] => Иванов Иван Иванович
[2] => Катеров-Иванов Иван Иваныч
[3] => Иванов И И
)

[1] => Array
(
[0] => И.И.
[1] => Иван Иванович
[2] => Иван Иваныч
[3] => И И
)

)


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Котовский
Спасибо большое=)))
еще маленький вопрос...он не распознает "u" в #ius пишет мол
Compilation failed: invalid UTF-8 string at offset 3 in
менял кодировку не помогает
Игорь_Vasinsky
ну это если вы в юникоде работаете (utf-8) - для ANSI уберите его (модификатор u)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Котовский
Array ( [0] => Array ( [0] => Так как регистрационное [1] => имя пользователя Должно [2] => состоять из латинских [3] => также цифр [4] => то надо Попов [5] => написать символьный Кривошеев [6] => Егор Александрович класс [7] => который будет удовлетворять [8] => этому условию [9] => этот символьный класс [10] => входит три интервала [11] => первый интервал [12] => все символы от [13] => маленькой буквы [14] => до маленькой буквы [15] => второй интервал [16] => но с большими [17] => третий интервал [18] => цифры от [19] => Мы описали только [20] => одну букву [21] => из которой может [22] => состоять регистрационное имя [23] => но таких букв [24] => может быть... а [25] => теперь как раз [26] => надо ответить на [27] => сколько таких букв [28] => может быть [29] => Да сколько угодно [30] => скажете вы [31] => что вы неправы ) [1] => Array ( [0] => как регистрационное [1] => пользователя Должно [2] => из латинских [3] => цифр [4] => надо Попов [5] => символьный Кривошеев [6] => Александрович класс [7] => будет удовлетворять [8] => условию [9] => символьный класс [10] => три интервала [11] => интервал [12] => символы от [13] => буквы [14] => маленькой буквы [15] => интервал [16] => с большими [17] => интервал [18] => от [19] => описали только [20] => букву [21] => которой может [22] => регистрационное имя [23] => таких букв [24] => быть... а [25] => как раз [26] => ответить на [27] => таких букв [28] => быть [29] => сколько угодно [30] => вы [31] => вы неправы ) )

Вот тогда что он выдает...
Задача состоит в том чтобы провести анализ текста и найти все Ф.И.О....до этого с регулярными выражениями просто не сталкивался
Котовский
Все разобрался=))спасибо за подсказку
preg_match_all("#[А-Я][а-я]{2,} [А-Я].[а-я]*[.]*?\s*[А-Я].[а-я]*[.]*?|[А-Я][а-я]{2,} [А-Я].[а-я]+#s",$income_str,$out_arr);
Котовский
Ещё один вопросик....помогите кто знает....есть массив содержащий все города России...с помощью регулярных выражений их надо в тексте найти и подсветить...но что-то не выходит sad.gif

$goroda="Москва, Санкт-Петербург, Новосибирск, Нижний Новгород, Екатеринбург, Самара, Омск, Казань, Челябинск, Ростов-на-Дону, Уфа, Волгоград, Пермь, Волгоград, Красноярск, Воронеж, Саратов, Тольятти, Краснодар, Ижевск, Ярославль, Ульяновск, Барнаул, Иркутск, Хабаровск, Тюмень, Владивосток, Новокузнецк, Оренбург, Кемерово, Липецк, Набережные Челны, Рязань, Томск, Пенза, Астрахань, Архангельск, Белгород, Брянск, Владикавказ, Владимир, Волжский, Вологда, Иваново, Калининград, Калуга, Киров, Комсомольск-на-Амуре, Кострома, Курган, Курск, Магнитогорск, Махачкала, Мурманск, Нальчик, Нижневартовск, Нижний Тагил, Орёл, Петрозаводск, Саранск, Смоленск, Сочи, Ставрополь, Стерлитамак, Сургут, Таганрог, Тамбов, Тверь, Тула, Улан-Удэ, Чебоксары, Череповец, Чита, Якутск, Абакан, Альметьевск, Ангарск, Арзамас, Армавир, Артём, Ачинск, Балаково, Балашиха, Батайск, Березники, Бийск, Благовещенск, Братск, Великие Луки, Великий Новгород, Волгодонск, Глазов, Грозный, Дербент, Дзержинск, Димитровград, Елец, Железнодорожный, Жуковский, Златоуст, Йошкар-Ола, Каменск-Уральский, Камышин, Канск, Киселёвск, Кисловодск, Ковров, Коломна, Колпино, Копейск, Королёв, Красногорск, Кызыл, Ленинск-Кузнецкий, Люберцы, Магадан, Майкоп, Междуреченск, Миасс, Муром, Мытищи, Назрань, Находка, Невинномысск, Нефтекамск, Нефтеюганск, Нижнекамск, Новокуйбышевск, Новомосковск, Новороссийск, Новотроицк, Новочебоксарск, Новочеркасск, Новошахтинск, Новый Уренгой, Ногинск, Норильск, Ноябрьск, Обнинск, Одинцово, Октябрьский, Орехово-Зуево, Орск, Первоуральск, Петропавловск-Камчатский, Подольск, Прокопьевск, Псков, Пятигорск, Рубцовск, Рыбинск, Салават, Северодвинск, Северск, Сергиев Посад, Серпухов, Старый Оскол, Сызрань, Сыктывкар, Тобольск, Уссурийск, Ухта, Хасавюрт, Химки, Черкесск, Шахты, Щёлково, Электросталь, Элиста, Энгельс, Южно-Сахалинск, Рыбинск, Переславль-Залесский, Тутаев, Углич, Ростов, Гаврилов-Ям, Данилов, Пошехонье, Мышкин, Любим, Алексин,Донской,Щёкино,Узловая,Ефремов,Богородицк,Кимовск,Киреевск,Суворов,Ясногорск,Плавск,Венёв, Белёв, Болохово,
Липки, Советск, Чекалин, Ржев,Вышний Волочёк, Кимры, Торжок, Конаково, Удомля, Бежецк, Бологое, Нелидово, Осташков, Кашин, Калязин, Торопец, Лихославль, Кувшиново, Западная Двина, Старица, Андреаполь, Весьегонск, Зубцов, Красный Холм, Белый, Сандово, Мичуринск, Рассказово, Моршанск, Котовск, Уварово, Кирсанов, Жердевка, Вязьма, Рославль, Ярцево, Сафоново, Десногорск, Гагарин, Дорогобуж, Ельня, Рудня, Починок, Демидов, Сычёвка, Велиж, Духовщина, Касимов, Скопин, Сасово, Ряжск, Новомичуринск, Рыбное, Кораблино, Михайлов, Спасск-Рязанский, Шацк,Спас-Клепики, Ливны, Мценск, Болхов, Дмитровск, Новосиль, Малоархангельск, Грязи, Данков, Лебедянь, Усмань, Чаплыгин, Задонск, Пушкино, Воскресенск, Домодедово, Раменское, Реутов, Долгопрудный, Клин, Чехов, Наро-Фоминск, Лобня, Егорьевск, Ступино, Дмитров, Дубна, Павловский Посад, Солнечногорск, Ивантеевка, Климовск, Видное, Фрязино, Лыткарино, Дзержинский, Кашира, Протвино, Троицк, Юбилейный, Истра, Луховицы, Краснознаменск, Щербинка, Шатура, Ликино-Дулёво, Можайск, Дедовск, Кубинка, Красноармейск, Озёры, Зарайск, Волоколамск, Лосино-Петровский, Старая Купавна, Рошаль, Черноголовка, Электрогорск, Электроугли, Котельники, Пущино, Хотьково, Куровское, Бронницы, Апрелевка, Голицыно, Московский Пересвет, Краснозаводск, Руза, Яхрома, Звенигород, Талдом, Дрезна, Высоковск, Ожерелье, Верея, Железногорск, Курчатов, Льгов, Щигры, Рыльск, Обоянь, Дмитриев-Льговский, Суджа, Людиново, Киров, Малоярославец, Балабаново, Козельск, Кондрово, Сухиничи, Жуков, Сосенский, Кремёнки, Боровск, Ермолино, Таруса, Белоусово, Медынь, Юхнов, Жиздра, Спас-Деменск, Мещовск, Мосальск, Кинешма, Шуя, Вичуга, Фурманов, Тейково, Кохма, Родники, Приволжск, Южа, Юрьевец, Заволжск, Наволоки, Пучеж, Комсомольск, Гаврилов Посад, Плёс, Борисоглебск, Россошь, Лиски, Нововоронеж, Острогожск, Павловск, Бутурлиновка, Семилуки, Калач, Бобров, Поворино, Богучар, Эртиль, Новохопёрск, Александров, Гусь-Хрустальный, Кольчугино, Вязники, Киржач, Собинка, Юрьев-Польский, Радужный, Лакинск, Покров, Струнино, Меленки,
Карабаново, Петушки, Камешково, Гороховец, Судогда, Суздаль, Костерёво, Курлово, Клинцы, Новозыбков, Дятьково, Унеча, Карачев, Стародуб, Жуковка, Сельцо, Почеп, Трубчевск, Фокино, Сураж, Мглин, Севск, Злынка, Губкин, Шебекино, Алексеевка, Валуйки, Строитель, Новый Оскол, Бирюч, Грайворон";

preg_match_all("#\b[А-Я][а-я]{2,}\s*[-]*[А-Яа-яё]*[-]*[А-Яа-яё]*\b#",$goroda,$result);

for($i=0; $i < count($result); $i++)
{


for($q=0; $q < count($result[$i]); $q++)
{
$set=preg_replace("%$result[$i][$q] %s",'<span style="background:red">\1</span>',$text);
}

}

echo $set;

думаю в выделенном ошибка
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.