[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения. Чёрт их подери...
3dmax
Здравствуйте.
Решил один из моментов реализовать на рег.выражениях, до этого горя не знал...
Конечно, перечитал разные статьи... Но, потребовалась индивидуальная помощь в одном моменте, разобравшись в котором, думаю, что у меня пойдёт и всё остальное...

Короче, код:
preg_match('/123?/', '1234567890', $ST); echo $ST[0];

С точки зрения человеческой логики результат следующий: "1234". Так?
Разъясните пожалуйста, почему интерпретатор выводит "123"?



Спустя 19 минут, 32 секунды (24.11.2010 - 10:11) kirik написал(а):
Цитата (3dmax @ 24.11.2010 - 01:52)
умаю, что у меня пойдёт и всё остальное...

Ты не представляешь себе как ты ошибаешься smile.gif

Как в крылатом выражении: "Хочешь решить какую-то проблему с помощью регулярных выражений? Поздравляем, теперь у тебя две проблемы".

А логика у тебя не та smile.gif Почитай умные манулы (коих на гугле можно найти множество, или вот например), потом пробуй сам писать. Не получилось - еще читай, потом пробуй.

Знак вопроса означает в твоем случае то, что после цифр 1 и 2 может стоять цифра 3. Ну или не стоять. Тоесть и строка 12 и строка 123 подойдет под это выражение.

Спустя 37 минут, 12 секунд (24.11.2010 - 10:48) 3dmax написал(а):
Опять же все попавшиеся мне статьи в том числе и по вашей ссылки, вообще с не нужными блок-схемами, учат понимание рег. выражений только в рамках рассматриваемых примерах?!
Вот мне нужно из html кода взять только часть, заключённую в теге "<div id=ttt>" и на основании своих знаний из русскоязычных справок, что мне попадались, я пишу маску:

/(<div id=ttt)*(<\/div)/

но не получаю нужного результата. Вот вам и статьи...
Хотя да, часть проглатывается, перелистывается, ибо хочется всё побыстрее, а не зацикливаться на этой ерунде...

Спустя 21 минута, 42 секунды (24.11.2010 - 11:10) Basili4 написал(а):
3dmax
для того чтоб работал как ожидаешь надо так

preg_match('/123.?/', '1234567890', $ST); echo $ST[0];

Спустя 1 час, 1 минута, 33 секунды (24.11.2010 - 12:12) kirik написал(а):
3dmax
Вот, читайте.

Спустя 1 час, 41 минута, 26 секунд (24.11.2010 - 13:53) 3dmax написал(а):
Всё, разобрался, наконец:
мне нужен был не "?", а "."
вместо "*" -- ".+"
Теперь всё стало на свои места... Просто всё дело в статьях. В одной сравнивали работу dir из cmd.com вот и забили мне голову этими "?" и "*".
Так что решение вышеуказанного примера следующее:

/(<div\sid=ttt).+(<\/div)/

Спустя 10 минут, 48 секунд (24.11.2010 - 14:04) DedMorozzz написал(а):
Пример просто невероятный. Во всех статьях нету ни малейшего описания базового синтаксиса, что бы понять логику.
Если прочитали бы описание синтаксиса, то таковых вопросов не возникало бы.
Знак ?, говорит о том, что символ, после которого стоит знак вопроса - встречается 0 или 1 раз.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.