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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Три символа подряд в произвольном порядке

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: cheops   (30.08.2007 в 19:57)   письмо автору
 
   для: stasmus   (30.08.2007 в 14:29)
 

Возможно вас заинтересует книга http://www.softtime.ru/info/fridl.php.

   
 
 автор: Unkind   (30.08.2007 в 14:36)   письмо автору
 
   для: stasmus   (30.08.2007 в 14:29)
 

Google, "Регулярные выражения"

   
 
 автор: stasmus   (30.08.2007 в 14:29)   письмо автору
 
   для: Unkind   (29.08.2007 в 21:05)
 

спасибо, а откуда взята эта инфо? Можно линк желательно на рус

   
 
 автор: Unkind   (29.08.2007 в 21:05)   письмо автору
 
   для: stasmus   (29.08.2007 в 20:41)
 

Ну условия на практике могут быть нужны тогда, когда хочется достать какое-то значение и обработать его preg_replace'ом, не задевая при этом другие данные. Просто указать, что дальше/прежде должно быть, но не заносить в строку совпадения. Например,

<?php
$string 
"abc";
$string preg_replace("/b(?=c)/"""$string);
echo(
$string); //ac
?>

   
 
 автор: stasmus   (29.08.2007 в 20:41)   письмо автору
 
   для: Unkind   (29.08.2007 в 20:18)
 

а зачем использовать такие lookahead-условия впринципе? и что будет если например так
(?=a) ? Какой смысл такой записи?

   
 
 автор: Unkind   (29.08.2007 в 20:18)   письмо автору
 
   для: stasmus   (29.08.2007 в 19:29)
 

> разъясните логику если не трудно

Здесь используются три lookahead-условия, которые позволяют "заглянуть вперед".
Такое условие записывается так: (?=RegularExpression)
Есть еще одно lookahead-условие: (?!RegularExpression), которое позволяет наоборот сказать "найти то, за которым не следует вот это".
Также существует два lookbehind-условия.
(?<RegularExpression) и (?<!RegularExpression).

[^a]*, [^b]* и [^c]* позволяют в данном случае не обращать внимания на посторонние символы, и, собственно, не обращать внимание на порядок этих букв - a, b, c.

   
 
 автор: stasmus   (29.08.2007 в 19:29)   письмо автору
 
   для: SHAman   (28.08.2007 в 16:32)
 

>echo preg_match('/(?=[^a]*a)(?=[^b]*b)(?=[^c]*c)/',$text);
разъясните логику если не трудно

   
 
 автор: Trianon   (29.08.2007 в 02:00)   письмо автору
 
   для: SHAman   (28.08.2007 в 16:31)
 

Я думал, вы уже решили .. Это задача на опережающие положительные утверждения
  $text = "alphabetical order";
  echo   preg_match('/(?=[^a]*a)(?=[^b]*b)(?=[^c]*c)/',$text);

   
 
 автор: SHAman   (28.08.2007 в 16:32)   письмо автору
 
   для: stasmus   (28.08.2007 в 16:24)
 

Да, ты прав. Я не все варианты перебрал:) В любом случае, твоя быстрее. Я же говорю - протупил:)

   
 
 автор: SHAman   (28.08.2007 в 16:31)   письмо автору
 
   для: Faraon   (28.08.2007 в 16:29)
 

Faraon, это было мое первое предложение:) Это самое эффективное скорее всего:) Но интерес сделать это в одну регулярку:)

   

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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