|
|
|
|
|
для: GeorgeIV
(10.07.2008 в 16:33)
| | Спасибо. Я в Гугле второй день эту тему лопачу, там копирайт один (это так называется?). Времени жалко. Но все равно спасибо. | |
|
|
|
|
|
|
|
для: Николай2357
(10.07.2008 в 15:50)
| | в гугле набираешь регулярное выражение и чиатешь все подряд. Мне самому, даже с немалой практикой, порой трудно до конца понять, как написать ту или иную регулярку., инет помогает. | |
|
|
|
|
|
|
|
для: GeorgeIV
(10.07.2008 в 15:17)
| | Да все так. А ковычка то причем тут, непойму. Вот по полочкам, как я понимаю. (Мне это очень важно понять, потому что на этом будет строится мое представление о регулярных)
\" означает, что выражение начинается с ковычки. Потом (.+?). Не совсем понятно, но примерно так: любой, в том числе и ковычка, могут встретится в тексте + один или более раз, ? может встретится только один раз или невстретиться совсем. Тоесть вместе должно быть только один раз. Потом опять \" то есть заканчивается ковычкой.
Вот тут начинается.
1.Почему не работает квантификатор {1} вместо +? \?(cлэш защитный, чтобы с тем вопросом не перепутать. Шутка)
2. Почему любые дручие символы, кроме ковычек могут встречаться в тексте больше одного раза.
3. Причеь здесь эта ковычка. Ему глубоко плевать на остальные символы. Я проверял.
Выходит, что такая конструкция (.+?) или (.*?) обозначает "все кроме ковычек". Любых. Обратные я тоже проверил.
Вот.
Нет на другие символы тоже реагирует, я ошибся. Получается, что в тексте между первым и последним символом не может встретиться того, что стоит рядом.
Пока не понимаю.
Посоветуйте что нибудь толковое почитать пожалуйста.
Спасибо. | |
|
|
|
|
|
|
|
для: Николай2357
(10.07.2008 в 15:08)
| | если точка - не остановится, если "/ав/", должен | |
|
|
|
|
|
|
|
для: GeorgeIV
(10.07.2008 в 14:53)
| | Все равно непонятно. Вот такой текст "ававава". По логике поиск должен остановиться на второй а.
Или если такой "авввввввва". Может так и есть, сейчас проверю.
Трудно это понять. Но уже чтото. Я первый раз с регулярными столкнулся, спасибо за ликбез. | |
|
|
|
|
|
|
|
для: Николай2357
(10.07.2008 в 14:36)
| | так потому что точка - это любой символ, поэтому тут жадность не появляется.
а ? после квантификатора означает, что поиск остановится при первом же совпадении, а не будет искаться максимальное | |
|
|
|
|
|
|
|
для: Trianon
(10.07.2008 в 12:46)
| | А как логически это понять?
* обозначает ноль или больше, а ?- 0 или 1. А когда *? все равно должно быть 0 или 1,
или + это один или больше, а +? должно тоже быть не больше одного вхождения. Однако конструкция (.*?) или (.+?) вылавливает все символы, даже если они повторяются (я проверял), а конструкция \"(.*?)\" или \"(.+?)\" вылавливает все, кроме ковычки.
Странно. | |
|
|
|
|
|
|
|
для: GeorgeIV
(10.07.2008 в 13:09)
| | Текст очень длинный, и там все что угодно может встретиться. И одинарные ковычки в том числе. Нужно выдернуть именно нужные куски.
Да, и еще, это в JS мне нужно было.
Вот теперь порядок. | |
|
|
|
|
|
|
|
для: GeorgeIV
(10.07.2008 в 12:42)
| | Огромное спасибо. Очень мне помогли. Пойду в магазин за другой книжкой, эта не полная. Про квантификаторы там есть, а про вопрос както упустили... | |
|
|
|
|
|
|
|
для: Николай2357
(10.07.2008 в 12:33)
| | Я только не понял, почему нельзя так
<?php
$text = 'Вова, "Вася", Петя, "Дима", Маша';
$str = preg_replace('/"/',"",$text);
print_r($str);
?>
| Или я не так понял? | |
|
|
|
|