Автор Тема: Как в регекспе указать НЕ?  (Прочитано 7008 раз)

0 Пользователей и 1 Гость просматривают эту тему.


Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Как в регекспе указать НЕ?
« Ответ #1 : 04 Июня 2003, 19:43:51 »
что-то типа [^(null)]
Мне тормоз послужил толчком...

Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Как в регекспе указать НЕ?
« Ответ #2 : 05 Июня 2003, 10:45:18 »
Neter
Сразу попробовал такую конструкцию, но она не прокатила. Наверно потому, что [] - это символьный класс, и группировка тут не катит...

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Как в регекспе указать НЕ?
« Ответ #3 : 05 Июня 2003, 17:45:32 »
Хмм.. действительно, тогда сначала надо грохнуть ненужные, а потом выбрать все остальные..
Мне тормоз послужил толчком...

Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Как в регекспе указать НЕ?
« Ответ #4 : 05 Июня 2003, 19:04:16 »
Это как? Одним регекспом похоже не получится. Дело в том, что мне урл с NULL как раз грохать не надо, а надо оставить без изменения (а со всеми остальными работать).

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Как в регекспе указать НЕ?
« Ответ #5 : 07 Июня 2003, 04:07:19 »
^(null)
зачем использовать []?
=)))

Оффлайн D1g174LM4n14c

  • 1m
  • Постоялец
  • ***
  • Сообщений: 137
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как в регекспе указать НЕ?
« Ответ #6 : 07 Июня 2003, 16:14:43 »
символ ^ вне [] НЕ означает отрицание!!
Мы такие!

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Как в регекспе указать НЕ?
« Ответ #7 : 07 Июня 2003, 16:27:26 »
kosm
Если надо исключить какой-то текст то для него надо писать отдельный регекс, а чтобы не трогать достаточно просто указать что надо подсвечивать только те УРЛы значение в которых стоит в двойных кавычках, имхо это основное отличие от null..

"!
([\\w\\./\\?=&%\\+\\-\\~]+)!i" или что-то по типу того :)
Мне тормоз послужил толчком...


Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Как в регекспе указать НЕ?
« Ответ #9 : 09 Июня 2003, 10:42:40 »
Neter
К сожалению, у меня урлы могут быть и без ковычек (даже в основном) :( Так что они отличаются только наличием слова NULL ;(

FreeSpace
Да, похоже одним регексоп не обойтись... Придется на пару с пхпшкой. Единственное, что я не выдираю все урлы, а просто нахожу каждый и с ним работаю на месте...

Спасибо всем!

PS: Но вообще странно, что в таком богатом синтаксисе регекспов нет приема отрицания вхождения :/

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Как в регекспе указать НЕ?
« Ответ #10 : 09 Июня 2003, 11:48:16 »
Да уж..
« Последнее редактирование: 09 Июня 2003, 11:55:08 от Neter »
Мне тормоз послужил толчком...

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Как в регекспе указать НЕ?
« Ответ #11 : 09 Июня 2003, 12:43:48 »
Попробуй так :)

"!((?:http|https|ftp)://([a-z0-9_\\.]{2,30})){1}/?([a-z0-9_\\./\\?=&%\\+\\-\\~]{0,150})?!si"
Мне тормоз послужил толчком...

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Как в регекспе указать НЕ?
« Ответ #12 : 09 Июня 2003, 19:10:04 »
Цитировать
динственное, что я не выдираю все урлы, а просто нахожу каждый и с ним работаю на месте...

Ну так никаких проблем нету, в любом случае можно на два действия разбить и особой потери производительности при этом не будет, насколько я знаю. Если что, выкладывай кусок кода тут - поможем! ;)
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Как в регекспе указать НЕ?
« Ответ #13 : 10 Июня 2003, 12:12:57 »
Цитировать
Neter:
Попробуй так

А если ссылки не полные ?
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Как в регекспе указать НЕ?
« Ответ #14 : 10 Июня 2003, 13:14:17 »
Лови kosmатый :) Должно работать..

$string = preg_replace("!([\\w_=&%\\+\\-\\~\\./]*)!si", "\\\\0",$string);
« Последнее редактирование: 10 Июня 2003, 13:31:20 от Neter »
Мне тормоз послужил толчком...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28