|
|
|
| требуется написать регулярку, которая бы делала revers check тегов, так чтобы вместо [/check] text [check] стало [check] text [/check] .
Только трабл в том, что строка в которой производится замена может выглядель так: [/check] text text [/check] text [check] text text [check].
Никак не могу решить данную задачу, натолкните на мысль. Возможно ли это сделать одной регуляркой или как-то надо с if else крутить, или циклами? | |
|
|
|
|
|
|
|
для: bnf
(13.01.2011 в 23:26)
| | Одной регуляркой вложенные структуры парсить крайне сложно. Я бы думал в сторону рекурсивного парсинга. То есть написал бы функцию, принимающую текст и находящую в нем нужные блоки. Каждый из блоков она бы отдавала себе же и делала то же самое. Функция должна возвращать уже измененный текст (если было что менять), либо неизменный, если менять нечего. Как-то так.
Ну и если предполагается делать это часто и постоянно, то подумать над кэшированием или другой оптимизацией. | |
|
|
|
|
|
|
|
для: SHAman
(14.01.2011 в 10:08)
| |
как, по Вашему, есть тут вложенная структура? | |
|
|
|
|
|
|
|
для: Trianon
(14.01.2011 в 10:14)
| | Долго медитировал на эти смайлики:)
Вероятно, есть. Либо нарушена структура как таковая. | |
|
|
|