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

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

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

 

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

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

тема: отрицание выражения целиком

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

 
 автор: Soft_Dm   (06.02.2008 в 15:01)   письмо автору
 
   для: kasmanaft   (06.02.2008 в 13:12)
 

работает!
спасибо!

   
 
 автор: kasmanaft   (06.02.2008 в 13:12)   письмо автору
 
   для: Soft_Dm   (06.02.2008 в 11:45)
 

Зачем тогда регулярные выражения? Можно просто сравнить эти слова:
<?php
$word 
"com";
$arr = array("org""net""com");

if (!
in_array($word$arr))
    echo 
"ok";
else echo 
"no";
?>

Для регистронезависимого сравнения можно использовать, например, strcasecmp().

Если хочется регулярными выражениями, можно проверить так:
<?
$subject 
"com";
$pattern '/^(com|org|net)$/';
$flag = !preg_match($pattern$subject$matches);
print_r($matches);
var_dump($flag);

А чтобы заработал вариант с этой опережающей проверкой, можно исправить его вот так:
/^(?!(com|org|net)\b)[a-z]+$/

Но лучше так не делать : )

   
 
 автор: Soft_Dm   (06.02.2008 в 11:45)   письмо автору
 
   для: kasmanaft   (05.02.2008 в 20:13)
 

необходимо написать регулярное выражение которое будет отрицать слова из массива(проверка уникальности) а остальные слова будет пропускать.
на даном этапе проблема в том, что при
$subject = "com";
$pattern = '/^(?!com|org|net)[a-z]+\b/';
$flag = preg_match($pattern, $subject, $matches);
print_r($matches);
echo "<br>".$flag;

com - отрицает
comon - тоже огтрицает, а должно пропускать!!!

Примечание. Здесь не рассматриваются домены - это может быть любой массив слов.

   
 
 автор: kasmanaft   (05.02.2008 в 20:13)   письмо автору
 
   для: Soft_Dm   (05.02.2008 в 19:51)
 

Поэтому я и прошу вас уточнить задачу.

Добавьте "^" в начало выражения - заработает. В данном конкретном случае.

   
 
 автор: Soft_Dm   (05.02.2008 в 19:51)   письмо автору
 
   для: kasmanaft   (05.02.2008 в 19:16)
 

$subject = "com";
$pattern = '/(?!com|org|net)[a-z]+\b/';
$flag = preg_match($pattern, $subject, $matches);
print_r($matches);
echo "<br>".$flag;

ответ
Array ( [0] => om )
1

------------------------------
$subject = "comon";
$pattern = '/(?!com|org|net)[a-z]+\b/';
$flag = preg_match($pattern, $subject, $matches);
print_r($matches);
echo "<br>".$flag;

ответ
Array ( [0] => omon )
1

   
 
 автор: kasmanaft   (05.02.2008 в 19:16)   письмо автору
 
   для: Soft_Dm   (05.02.2008 в 19:04)
 

> если сравниваю с com
Именно с "com" ? Зачем тогда рег. выражения применять?

Если на конце урла com не должно быть, можно как-то так попробовать:
часть_урла_до_последней_точки\.(?!com|org|net)[a-z]+\b

UPD или stripos() тогда... если не важно, где com находится; !preg_match(""/com|org|net/i" ....)

   
 
 автор: Soft_Dm   (05.02.2008 в 19:04)   письмо автору
 
   для: kasmanaft   (05.02.2008 в 18:52)
 

есть массив слов com|org|net
если сравниваю с com - хочу получить отрицание (элемент совпал с элементом массива)
если сравниваю с comn, или comon -это правильно (элемент не совпал с элементом массива)
с (?!com|org|net) не получается

   
 
 автор: kasmanaft   (05.02.2008 в 18:52)   письмо автору
 
   для: Soft_Dm   (05.02.2008 в 18:44)
 

Для этого можно использовать опережающую негативную проверку (?!com|org|net).
Опишите поточнее задачу... если не получится.

   
 
 автор: Soft_Dm   (05.02.2008 в 18:44)   письмо автору
 
   для: Soft_Dm   (05.02.2008 в 18:27)
 

если [^(com|org|net)]
то comc, netm - отрицает(отрицает еще и буквы етих слов)
comw - нормально
может как-то указать группу слов ? а не символы

   
 
 автор: Mookapek   (05.02.2008 в 18:36)   письмо автору
 
   для: Soft_Dm   (05.02.2008 в 18:27)
 

Так надо тогда убрать [a-z]*

   

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

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

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