Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Правило составления образцов
 
 автор: Владимир55   (26.03.2007 в 17:17)   письмо автору
 
 

Многие регулярные выражения используют образцы, но принципы их составления я не понимаю.

Например, на с.156 Самоучителя есть пример работы функции preg_match. Здесь в переменной
$str = "PHP один из лучших языков программирования для Web" ищется образец "/\bweb\b/i". А самое интересное, что результат поиска - "Соответствие найдено"! В чем же это соответствие? Ведь в тексте НЕТ слешей, и нет слова bweb. Или это элементы html кода? А если бы написали просто web, то его бы не нашли? А если б я искал слеш, тогда как? А если бы я искал именно сочетание знаков /\bweb\b/i как единое слово?

В листинге 9.7 ищется имя хоста, и для этого составляется такой образец: "/^(http:\/\/)?([^\/]+)/i". Лично я не могу установить связи между таким образцом и решаемой задачей, хотя она, разумеется, есть. Но какая?

Неплохо было бы знать общее правило составления образцов, коль скоро оно такое неоднозначное! Оно где-то описано?

   
 
 автор: SHAman   (26.03.2007 в 17:57)   письмо автору
 
   для: Владимир55   (26.03.2007 в 17:17)
 

Оно описано. И в книге этой тоже. И на этом сайте тоже и в интернете где угодно. Наберите в поисковой системе "регулярные выражения" и изучайте всласть.

В примерах все верно. Мы ищем слово web в строке. Символ \b в регулярных выражениях обозначает границу слова, так что под этот шаблон и попало наше слово web. Если бы мы не указывали \b, под этот шаблон подпали бы еще и строки:
web123
123web
123web123

А так, они не подпадают. Мой вам НАСТОЯТЕЛЬНЫЙ СОВЕТ: сначала научитесь хоть чему-то самостоятельно, путем нормального чтения книг и практики, пробуйте, и лишь когда не получается задавайте вопросы. Никто вам никогда не ответит на ваш вышестоящий вопрос, потому что ответ на него - небольшая книга. Поэтому купите такую книгу, прочитайте, попробуйте то, что там написано и потом, если что-то не получится - задавайте вопросы.

   
 
 автор: Владимир55   (26.03.2007 в 18:20)   письмо автору
 
   для: SHAman   (26.03.2007 в 17:57)
 

Спасибо за совет - Вы охладили мой пыл!

Хотя, в принципе, я примерно так и делаю: и книги купил, и создал специальный домен, где размещаю файлы рнр для отработки навыков. И если что-то непонятно, то прежде делаю тестовые операции, на которых пытаюсь разобраться в проблеме.

Специфика же дела состоит в том, что мне не с кем посоветоваться и даже не с кем обсудить, ибо нет рядом со мною никого, кто хотя бы знал как следует Ворд, не говоря уже про что-то более сложное. Пока что так.

   
 
 автор: SHAman   (26.03.2007 в 18:35)   письмо автору
 
   для: Владимир55   (26.03.2007 в 18:20)
 

Могу посоветовать для отработки навыков пакет Денвер, который очень прост в установке и настройке и позволяет отлаживать сценарии php-и-не-только на локальной машине, без доступа в интернет.

Что касается книг, то тут я могу сказать только, что с вашим уровнем знаний лучше читать книги типа самоучителей, в которых поэтапно расписано как и что нужно делать, приведены упражнения, выполнив которые вы кое-чему научитесь.

Рекомендую начать с html, потом только браться за php.

   
 
 автор: cheops   (27.03.2007 в 02:37)   письмо автору
 
   для: Владимир55   (26.03.2007 в 17:17)
 

Ведь в тексте НЕТ слешей, и нет слова bweb.
Слеши / здесь выступают границей регулярного выражения, можно использовать и любые другие, например, заменив "/\bweb\b/i" на "#\bweb\b#i"
\b - это специальное обозначение, которое означает границу слова, т.е. ограниченное этими последовательностями слово не может входить в состав других слов.

PS Регулярные выражения - это целый язык (правда специализированный) и к его изучению следует подходить как к изучению отдельного языка, т.е. вдумчиво читать описание, тренироваться в составлении и использовать полученные знания на практике (иначе всё забывается моментально).
PPS Для изучения регулярных выражений можно использовать отдельную книгу "Дж. Фридл. Регулярные выражения", которая полностью им посвящена - чтение не из лёгких, как и сама тема, но если изучите регулярные выражения поднимитесь на более высокую планку, так как регулярные выражения вы найде везде (Perl, PHP, ASP.NET, JavaScript, MySQL и т.п.) - проще назвать где они не используются.

   
 
 автор: Владимир55   (27.03.2007 в 12:10)   письмо автору
 
   для: cheops   (27.03.2007 в 02:37)
 

Большое спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования