Построить регулярное выражение на поиск ЛЮБЫХ УРЛ(ов) в тексте...

  • Автор темы Автор темы Zhenya
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Zhenya

Новичок
Построить регулярное выражение на поиск ЛЮБЫХ УРЛ(ов) в тексте...

Здравствуйте!
Помогите пожалуйста построить регулярное выражение или функцию на поиск/замену всяких видов URL в тексте...

Например, найти в тексте все указанные ниже

www.site1.ru
site1.ru
http://www.site2.psite.net
http://site2.psite.net
http://www.site2.psite.net.ru
www.site2.psite.net.ru

===вообщем домены любых уровней (вместо точки может быть пробел)===

===и сайты содержащие:

[http://www.site2.psite.net]
(http://site2.psite.net)
---http://www.site2.psite.net---

Помогите...
 
сам хоть палец о палец ударять пробовал?
 
Автор оригинала: zerkms
сам хоть палец о палец ударять пробовал?
конечно пробовал...
не получается...
слова нужные вырезаются через пробел или рядом которые стоят

пробую примерно так

\W+ - найдет "[" или "("
\w+ - например www
\. - точка после www
\w+ - снова слово
\. - опять точка
\w+ - снова слово
\W+ -найдет "]" или ")"

вот такие конструкции получаются... но это слишком большой код получится... наверное можно как то по универсальнее написать...
думаю кто то уже задавался такой проблемкой или знает где шаблон найти для этой цели...
 
Zhenya
ну дык если запрос к гуглю у вас состоит тоже из одних букв W, то он явно ничего не найдет
 
Автор оригинала: Андрейка
Zhenya
ну дык если запрос к гуглю у вас состоит тоже из одних букв W, то он явно ничего не найдет
дайте пример без W... я что и спрашиваю...:)
 
Вот как пытаюсь делать:
PHP:
/([(https?|ftp)://])*[-a-z0-9]+(\.[a-z0-9]+)*\.(ru|com|info)/i
тогда строка вида
PHP:
Текст оставить https://www.tets1.test2.test3.info и этот текст оставить
будет иметь вид:
PHP:
Текст оставить  и этот текст оставить
...то что нужно...
но как заставить искать и адреса вида:
PHP:
Текст оставить tets1.test2.test3.info и этот текст оставить
т.е., когда строка адреса не начинается ни с www, ни с http|https|ftp
?
 
Текст оставить tets1.test2.test3.info и этот текст оставить
dovg.poshel.kurit - это тоже урл?

для начала определись, что ты считаешь урлами
формализуй задачу
 
Начало поста было:

Например, найти в тексте все указанные ниже

www.site1.ru
site1.ru
http://www.site2.psite.net
http://site2.psite.net
http://www.site2.psite.net.ru
www.site2.psite.net.ru

===вообщем домены любых уровней (вместо точки может быть пробел)===

===и сайты содержащие:

[http://www.site2.psite.net]
(http://site2.psite.net)
---http://www.site2.psite.net---

Еще накопал такое:

PHP:
([(https?|ftp)://])*[-a-z0-9]+(\.[a-z0-9]+)*\.(ru|com|info)(?>[\]\).,?!])*

найдет такую строку:
https://www.tets1.test2.test3.info!]

-~{}~ 02.06.08 11:31:

а такая
PHP:
(?>[\[\(.,?!])*([(https?|ftp)://])*[-a-z0-9]+(\.[a-z0-9]+)*\.(ru|com|info)(?>[\]\).,?!])*

найдет такую
[!(https://www.tets1.test2.test3.info!]
 
Автор оригинала: triumvirat
эт как так?
например: http://www.vasya pupkin.pupkin.ru

-~{}~ 02.06.08 11:42:

Вообщем для моей задачи почти подойдет вот это выражение:
PHP:
/(?>[-\[\(.,?!])*([(https?|ftp)://])*[-a-z0-9]+(\.[a-z0-9]+)*\.(ru|com|info|org|ua|[a-z]+)(?>[-\]\).,?!])*/i

оно вроде ищет все предложенные мной варианты, но с пробелом чета как то...:(

-~{}~ 02.06.08 11:45:

хотя выражение
(?>[-\[\(.,?!])*([(https?|ftp)://])*[-a-z0-9 ]+(\.[a-z0-9 ]+)*\.(ru|com|info|org|ua|[a-z]+)(?>[-\]\).,?!])*

и эту проблемку решает...

кто может предложить более оптимальный способ?
 
Интересно почему эта скользкая тема с парсингом до сих пор не закрытаю...
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху