За последние 24 часа нас посетил 17401 программист и 1558 роботов. Сейчас ищут 1944 программиста ...

Отличная статья по регулярным выражениям

Тема в разделе "Регулярные выражения", создана пользователем D.Lans, 12 авг 2006.

  1. D.Lans

    D.Lans Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0
  2. svk

    svk Активный пользователь

    С нами с:
    7 авг 2006
    Сообщения:
    506
    Симпатии:
    0
    Адрес:
    NetByNet
    то что надо

    только размер... многовато :)
     
  3. D.Lans

    D.Lans Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0
    Читается быстро, я уже сам писать начал рег. выражения ;)
     
  4. D.Lans

    D.Lans Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0
    Вопрос в тему.
    Я написал выражение
    /^[a-zA-z]+(\s[a-zA-z]+)+$/
    Хочу чтобы оно соответствовало словам:
    Vasya
    Vasya Pupkin
    Vasya Pupkin Super
    Vasya Pupkin Super Mega
    :)
    Все бы хорошо, но оно так же соответствует:
    Pupkin
    Что нежелательно

    Если не понятно, посняю, выражение должно соответствовать:
    слово
    слово пробел слово
    слово пробел слово пробел слово
    и т.д.
    а оно (что нежелательно), также соответствует:
    пробел слово

    Как этого избежать?
    Знаю, что это не практично, всегда можно пробелы лишние отрезать в PHP, но вопрос скорее теоретического характера чем практического.
     
  5. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    /^[a-zA-z]+
    и
    пробел слово
    ?
     
  6. D.Lans

    D.Lans Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0
    Ti, что '?' ?
    Мне кажется я подробно объяснил чего хочу добиться :)
     
  7. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    я не понимаю, как /^[a-zA-z]+ может соответствовать " слово"
     
  8. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    )))ты просто не так понял, "слово" это просто пример ему нужно "Vasia Pupkin" :) или например "slowo" :)
     
  9. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    а можно так /^[а-я]+ ?
     
  10. D.Lans

    D.Lans Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0
    Не суть важное на каком языке слово.
    Суть важно как сделать что я хочу.
    Если вообще так сделать можно :shock: .
     
  11. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    Тем самым ты исключишь последовательность от "а" до "я", повторяющуюся любое количество раз.
     
  12. D.Lans

    D.Lans Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0
    А зачем
    1. Русские буквы нужны тут
    2. Их исключать.

    Или я чего-то недопонимаю.
     
  13. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    понял ничего
     
  14. D.Lans

    D.Lans Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0
    Вопрос темы в данный момент и далее неактуален вследствие нахождения более обширного решения этой проблемы и пересмотре моих взглядов на регулярные выражения.
    Тему можно закрыть.
    А можно и не закрыть.
     
  15. Lesya

    Lesya Активный пользователь

    С нами с:
    14 авг 2006
    Сообщения:
    54
    Симпатии:
    0
    Адрес:
    Запорожье
    Кто-нибудь понял зачем в регулярных выражениях ставить ^ и $ в начале и в конце строки поиска?
    Когда я ставлю эти символы, результат поиска отрицательный :(
     
  16. Anonymous

    Anonymous Guest

    Т.е. грубо говоря, добавлением их в регулярку ты указываешь, что строка должна точно совпасть с шаблоном, а не просто встречатся в каком либо месте строки....
     
  17. Lesya

    Lesya Активный пользователь

    С нами с:
    14 авг 2006
    Сообщения:
    54
    Симпатии:
    0
    Адрес:
    Запорожье
    Тогда понятно почему у меня ничего не находило.
     
  18. Pasha

    Pasha Активный пользователь

    С нами с:
    8 мар 2006
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Зеленодольск
    Подскажите пожалуйста, почитал много инфы но так и не понял как сделать так чтобы можно было из
    Код (Text):
    1. [color=red]red[/color]
    преобразовать в <font color="red">red</font> как мне нужно сформулировать поиск?
     
  19. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Pasha
    плохо читал. плохо искал. взять хотя бы форум phpBB, там есть регулярное выражение для твоей ситуации.
    простейший пример для твоей ситуации:
    Код (Text):
    1. preg_replace('~\[color=(.*?)\](.*?)\[/color\]~i', '<font color="\\1">\\2</font>', $text);
     
  20. Pasha

    Pasha Активный пользователь

    С нами с:
    8 мар 2006
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Зеленодольск
    simpson
    за решение спасибо!
    что касается phpBB, да там есть про это тока я не смог к сожалению понять всё что там написано так как знаю ещё маловато, да и нормального мануала где было бы всё черно по белому расписано нет... есть тока множество запудренных слов которые трудно себе представит…(((
    если есть ссылка на толковый мануал где «черно по белому написано» дай ссылку?
     
  21. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
  22. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Ужас а не пример, хуже даже придумать сложно :)
    (извени конечно но это правда)
     
  23. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    поэтому он простейший :)
     
  24. Mavir

    Mavir Guest

    Vladson, приведи свой пример. Или только умеешь на все говорить, что хуже некуда? ;)
     
  25. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Mavir
    Если ты не знаешь как лучше то это не значит что лучше не возможно !!!

    (.*?) в таких случаях это реальная дыра !!!

    Реально надо строже ограничить всё что идёт в "color" чтоб избежать проблем (XSS и.т.д.)

    Как именно мне лень искать ибо атрибут "color" я не использую уже года три и не помню какие у него ограничения. (для этих-же целей использую CSS)