Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2015, 12:18   #1
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию И снова регулярные выражения

Всем привет!
Вычленяю ссылки из bbcode, но никак не догоню, что делать с "=", кто силён, смел, отважен и умел в этом, подскажите)))
Код двух видов:
Код HTML:
[url]http://ya.ru[/url]
и
[url=http://ya.ru]Yandex[/url]
У меня получилось, вот: \[url=?(.*?)\](.*?)\[\/url\]

Последний раз редактировалось ДралсяСошибками; 11.08.2015 в 12:48. Причина: Неграмотность((
ДралсяСошибками вне форума Ответить с цитированием
Старый 11.08.2015, 12:35   #2
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

Где будет использоваться? (т.е. движок-обработчик какой?) А то бывают разные нюансы, разные правила.
ResourceSpace вне форума Ответить с цитированием
Старый 11.08.2015, 12:47   #3
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Маленький чат, юзер сам обрамляет ссылку bbcode и отсылает, если ошибся в написании хоть одного символа тегов, вся конструкция простым текстом, жёсткие условия в нелёгкое время)))
ДралсяСошибками вне форума Ответить с цитированием
Старый 11.08.2015, 13:02   #4
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

Да я не об этом, что за система будет делать обработку? JavaScript? Или модуль какой в exe? Правила просто могут отличаться, что-то требоваться, что-то не поддерживаться, что-то отсутствовать, итп.

Для начала \[[uU][rR][lL]\] не хотите?
Цитата:
если ошибся в написании хоть одного символа тегов, вся конструкция простым текстом
Зачем? Это некрасиво. Если ошибки - отказываться отправлять, мол юзер поправляйте свою невалидатщину.
ResourceSpace вне форума Ответить с цитированием
Старый 11.08.2015, 13:17   #5
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Не, Delphi клиент-сервер лицом к лицу)) В обоих православный модуль RegExp будет трудится. От заглавных букв в тегах хочу отказаться, то есть будет подсказка с примером и ни шагу в сторону))) Отказа в отправке не будет, отправка на совести клиента, а вот сервер если не распарсит, то выплюнет строкой с косячными тегами)))
ДралсяСошибками вне форума Ответить с цитированием
Старый 11.08.2015, 15:04   #6
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
Лампочка Регулярное выражение, Regular expression, RegExp, BB, BBCode, URL

Цитата:
модуль RegExp
Не обладаю сим. Буду благодарен если скинете: ResourceSpace@mail.ru

Рекомендую:
Нацарапал некое убожество, проверьте, потянет ли:
Цитата:
Сообщение от Expression:
Код HTML:
/\[url(?:\](.*?)|=(?:([^'"]*?)|'(.*?)'|"(.*?)")\](.*?))\[\/url\]/g
Узреть сиё воочию
Цитата:
Сообщение от Text:
Код HTML:
есть [url]http://yandex.ru/search/?text=1[/url] раз
есть [url=http://yandex.ru/search/?text=2]Yandex2[/url] два
есть [url='http://yandex.ru/search/?text=3']Yandex3[/url] три
есть [url="http://yandex.ru/search/?text=4"]Yandex4[/url] четыре
Цитата:
Сообщение от Substitution:
Цитата:
<a href="$1$2$3$4">$1$5</a>
Если потребуется в любом регистре: заменить "url" на "[uU][rR][lL]".
ResourceSpace вне форума Ответить с цитированием
Старый 11.08.2015, 16:04   #7
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Спасибо, ссылки и полезные, регулярка, то что нужно)))
Но модуль, который я использую(http://regexpstudio.com/RU/) не желает работать, выдаёт ошибку, что вроде не распознал какой то идентификатор((( На сайте регулярка работает отлично, а вот в делфи её так с ходу не воткнуть, но смысл понятен, допилю)))
ДралсяСошибками вне форума Ответить с цитированием
Старый 11.08.2015, 16:25   #8
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
Восклицание

Скачал с указанного сайта некий exe-файл и запустил. Видимо оно не поддерживает "Группировка без обратной связи".
Тогда попробуйте:
Код HTML:
/\[url(\](.*?)|=(([^'"]*?)|'(.*?)'|"(.*?)")\](.*?))\[\/url\]/g
Код HTML:
<a href="$2$4$5$6">$2$7</a>
ResourceSpace вне форума Ответить с цитированием
Старый 11.08.2015, 16:39   #9
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Этот вариант почти заработал, без /g в JS это какой то глобальный поиск, а в этом модуле другое(((
ДралсяСошибками вне форума Ответить с цитированием
Старый 11.08.2015, 17:26   #10
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

Работает же?
Может там свойство какое для G.
ResourceSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка, арифметические выражения вида A x B. Вычислить значение выражения Un1q Паскаль, Turbo Pascal, PascalABC.NET 4 09.12.2013 14:47
Снова я и снова геморрой, только уже с многопоточностью FleXik Общие вопросы Delphi 26 07.07.2013 16:48
И снова COM.... kineziz Общие вопросы C/C++ 6 22.07.2012 23:10
Снова и снова. ladose Общие вопросы Delphi 1 11.04.2012 03:37
MDIChild снова и снова... Siber_Dec Общие вопросы Delphi 2 13.12.2009 03:24