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

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

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

 

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

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

тема: Как исключить префиксы?
 
 автор: а-я   (17.09.2011 в 13:35)   письмо автору
 
 

на входе есть код, работает кривая библа, которая принимает только регулярные...

мне надо исключить несколько пефиксов.

например,


no1, no2, no3, no4 - исключить

`^[^(?:no1|no2|no3|no4)]`uis - как-то в таком духе

т.е. чтоб вернул false если код будет no1**, no2**, no3**
и вернул true, если yes** - или что-то в этом роде..

  Ответить  
 
 автор: cheops   (17.09.2011 в 13:42)   письмо автору
 
   для: а-я   (17.09.2011 в 13:35)
 

Попробуйте следующее регулярное выражение
/^(no1|no2|no3|no4)/i

  Ответить  
 
 автор: а-я   (17.09.2011 в 13:49)   письмо автору
 
   для: cheops   (17.09.2011 в 13:42)
 

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

  Ответить  
 
 автор: а-я   (17.09.2011 в 13:56)   письмо автору
 
   для: cheops   (17.09.2011 в 13:42)
 

как я и думал.. работает, но наоборот)
т.е. мне надо если есть такие префиксы, то вернуть false.
т.е.т.е. если есть такие префиксы, то не брать код.

  Ответить  
 
 автор: cheops   (17.09.2011 в 17:54)   письмо автору
 
   для: а-я   (17.09.2011 в 13:56)
 

А, понятно, тогда лучше воспользоваться опережающей негативной проверкой
<?php 
  $pattern 
"#^(?!no1|no2|no3|no4).*?#";
  
$text "Нужно проверить первое слово строки.";
  if(
preg_match($pattern$text)) echo "нет префикса";
  else echo 
"есть префикс";
?>

  Ответить  
 
 автор: а-я   (19.09.2011 в 08:19)   письмо автору
 
   для: cheops   (17.09.2011 в 17:54)
 

Супер!) спасибо..)

  Ответить  
 
 автор: а-я   (05.06.2013 в 22:21)   письмо автору
 
   для: cheops   (17.09.2011 в 17:54)
 

доброго времени суток.

А как можно сделать выборку по этим данным?

<?php  
  $pattern 
"#^((?!no1|no2|no3|no4)) .*?#"
  
$text "Нужно проверить первое слово строки."
  if(
preg_match($pattern$text$m)) 
print_r($m); 
?>


Ничего нет. Нужно вернуть первое слово которое не равно no1 и no2 и no3 и no4

  Ответить  
 
 автор: Deed   (06.06.2013 в 18:57)   письмо автору
 
   для: а-я   (05.06.2013 в 22:21)
 

^(?<!no1|no2|no3)(.+?)(?:\s).*
http://phpfiddle.org/lite/code/nv5-4xh

  Ответить  
 
 автор: а-я   (06.06.2013 в 21:00)   письмо автору
 
   для: Deed   (06.06.2013 в 18:57)
 

Благодарю =))

  Ответить  
Rambler's Top100
вверх

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