Forum Webscript.Ru

Программирование => Perl => Тема начата: DartSidius от 26 Марта 2006, 15:57:44

Название: Регулярные выражения
Отправлено: DartSidius от 26 Марта 2006, 15:57:44
Есть переменная $page - в ней содержится html страница...собсвенно надо из неё выдрать то, что содержится в теге
Название: Регулярные выражения
Отправлено: smoker_cannabis от 26 Марта 2006, 17:00:16
if ($page =~ //gi){<br /><br />    $temp=$\';<br />    $temp =~ m/<\\/title>/gi;<br />    $temp=$`;<br />    print $temp;<br />}<br />else { print "Заголовок не найден"; } </dd> <dt class="postheader"> Название: <strong>Регулярные выражения</strong><br /> Отправлено: <strong>DartSidius</strong> от <strong>26 Марта 2006, 17:17:05</strong> </dt> <dd class="postbody"> ужас какой :)..а проще?..просто регулярным выражением одним? </dd> <dt class="postheader"> Название: <strong>Регулярные выражения</strong><br /> Отправлено: <strong>smoker_cannabis</strong> от <strong>26 Марта 2006, 18:11:54</strong> </dt> <dd class="postbody"> одним выражением так<br />print $1 if $page=~/.<title>(.*?)<\\/title>/i; </dd> <dt class="postheader"> Название: <strong>Регулярные выражения</strong><br /> Отправлено: <strong>Алан</strong> от <strong>27 Марта 2006, 13:56:56</strong> </dt> <dd class="postbody"> А точка там зачем? ".<title>" - ?<br /><br />if( $page =~ /<title>(.*?)<\\/title>/ ) { print $1; }<br /><br />не... просто интересно...<br /><br />Да, кстати.... а если встретиться конструкция типа:<br /><title>TitleSome Text - ?
Я не спец в RegExp, что он выдернет? Просто вроде есть всякие эти... не помню как называются :Р значки типа ?: ?= которыми можно ограничить зону поиска... всмысле задать что бы в (.*?) не встречались больше никаких
Название: Регулярные выражения
Отправлено: smoker_cannabis от 27 Марта 2006, 17:35:40
Цитировать
Алан:
А точка там зачем? "." - ?</blockquote><div class="quotefooter"><div class="botslice_quote"></div></div><br /><br />Насчет точки - очепятка :)<br /><br />из вашего примера <br /><div class="quoteheader"><div class="topslice_quote">Цитировать</div></div><blockquote class="bbc_standard_quote"><strong>Алан</strong>:<br /><title>TitleSome Text

регэксп  /(.*)<\\/title>/  вернул бы в $1 значение "TitleSome Text" т.е. если есть возможность выбора - то всегда возвращается более длинный вариант.

добавление ? к *  значит, что если есть выбор, то возвращается более короткий вариант.
Название: Регулярные выражения
Отправлено: Алан от 27 Марта 2006, 18:06:19
спасибо, понятно :)
Название: Регулярные выражения
Отправлено: 2NetFly от 28 Марта 2006, 21:59:01
Если из "TitleSome Text" нужно выдрать "Title", используй /(.*?)<\\/title>/</strong>. </dd> </dl> <div id="footer" class="smalltext"> <span class="smalltext" style="display: inline; visibility: visible; font-family: Verdana, Arial, sans-serif;"><a href="http://forums.webscript.ru/index.php?PHPSESSID=1c2mpgbva1m6jdeb4soa82hhk4&action=credits" title="Simple Machines Forum" target="_blank" class="new_win">SMF 2.0.19</a> | <a href="http://www.simplemachines.org/about/smf/license.php" title="License" target="_blank" class="new_win">SMF © 2016</a>, <a href="http://www.simplemachines.org" title="Simple Machines" target="_blank" class="new_win">Simple Machines</a> </span> </div> </body> </html>