| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > Хитрая регулярка |
| Автор: DmbITpo 23.1.2012, 18:19 |
| Здравствуйте. Столкнулся с задачей написания регулярки. Но никак не получается корректно выполнить. Всё близко, близко да не то. Может кто поможет. условие такое: Надо из строк типа {g text="hello words" prefix="title"} {g text="hello "new" words" prefix="title"} {g text="hello mine's "new"words" prefix="title"} {g text="hello my words"} {g text="hello my "words""} вытащить всё, что находится между text="..." (т.е. получить ...). Но учесть, что внутри кавычек могут быть другие кавычки... Может есть какие варианты? заранее спасибо! |
| Автор: $дмитрий 23.1.2012, 22:02 |
| А в prefix могут быть кавычки? Какие-то еще ключи бывают кроме text и prefix? |
| Автор: DmbITpo 24.1.2012, 11:11 | ||
в префиксе кавычек быть не может. Но кроме префикса могут быть ещё любые другие аргументы... |
| Автор: $дмитрий 24.1.2012, 13:28 | ||
Вот в этом вся проблема Раздели задачу на 2 этапа 1. Обрезай все ключи кроме text 2. Получай текстовое описание, таким образом "#text=\"(.+)"\#" |
| Автор: Nigel 25.1.2012, 02:06 | ||
как-то так
пустые строчки, надеюсь, сам сможешь убрать. |
| Автор: ksnk 25.1.2012, 08:29 | ||
| DmbITpo, а что нужно-то? выковырять значение атрибута text или получить комплект всех атрибутов тега G? В значение атрибута может встретится символ '='? Значение атрибута обязательно заключено в кавычки? Если нужно только закавыченное значение text, и = в значении не бывает то такая регулярка будет короче, чем у Nigel
|