Автор Тема: помогите с рег. выражением  (Прочитано 3907 раз)

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

Оффлайн st_steev

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите с рег. выражением
« : 03 Октября 2002, 23:36:09 »
Вобщем опять тема:) Короче, надо определить нет ли длинного слова, которое может превышать определенную длину. Но при этом нужно исключать проверку того,что находится между [a][/a] и . Мужики, заранее спасибо:)

Оффлайн st_steev

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите с рег. выражением
« Ответ #1 : 03 Октября 2002, 23:38:06 »
после и идет [mail][/mail]:)

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
помогите с рег. выражением
« Ответ #2 : 04 Октября 2002, 00:46:27 »
я когда-то делал что-то подобное. может это наведет тебя на определенные мысли:

if( $message =~ /[^\\s]{40,}/ )
{
    unless( $message =~ /.{1,40}?<\\/a>/i )
    {
         $warning = "вы используете слишком длинные слова";
    }
}

если что не понятно - будем объяснять ;)
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн st_steev

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите с рег. выражением
« Ответ #3 : 04 Октября 2002, 09:05:43 »
Нет, мне надо проверить не то, что внутри тегов, а то, что вне них. Ну, например, есть строка:
аааааааааааааааааааааааааааа[a]link[/a]aaaaaaaaaaaaaaaa[a]link[/a]aaaaaaaaaaaaaaaaaaaaaaaaaa[mail]mail[/mail]aaaaaaaaaaaaaaaaaaa [a]link[/a] и тд.....
Ну дык вот, надо проверить, нет ли длинного слова вне тегов. А то, что внутри, для них есть своя обработка....

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
помогите с рег. выражением
« Ответ #4 : 04 Октября 2002, 12:17:01 »
Дык...:)
Думаю, автор объяснит понятнее...
Цитировать
if( $message =~ /[^\\s]{40,}/ )


Перевожу на нормальный язык. ;) Если в сообщении есть последовательность символов длиной больше 40, то...

Цитировать
unless( $message =~ /.{1,40}?<\\/a>/i )


если в сообщении не содержится ссылка длиной до 128 символов с описанием длиной до 40 символов, то выдать сообщение об ошибке.

USE, я ничего не упустил? :)

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

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
помогите с рег. выражением
« Ответ #5 : 04 Октября 2002, 14:47:14 »
Цитировать
USE, я ничего не упустил?

нет, ты все верно сказал, если я все верно написал ;).
Цитировать
В общем-то это хороший вариант, но есть возможность того, что в сообщении будет и слово, и длинная ссылка.

да может быть, регексп можно немного подкоректировать, ведь я его на лету вспоминал-придумывал ;). если автору надо - пускай додумает, а если не получится - будем мы додумывать.
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн st_steev

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите с рег. выражением
« Ответ #6 : 04 Октября 2002, 23:40:13 »
Ребят, до этого и я догадался. Опять выходит недопонимание:(
тут или я туплю или одно из двух... Ведь этот код смотрит, есть ли слово, длина которого более сорока символов. Если есть, то смотрит, есть ли ссылка с указанными параметрами. Ведь правильно?... Сами посудите, если слов много, ссылок много, разве это работать будет...сомневаюсь. Я вот думаю, как бы сделать так, что б при проверке, вот эти теги и все, что между ними находится, пропускалось бы вне зависимости от количество слов и тегов. Просто я эти рэгскэпы недавно начал осваивать и некоторогоя еще не знаю и не допонимаю. Я над этой задачкой уже который день бьюсь...

 

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