- Вложеное регулярное выражение, Led, 01:25 , 01-Апр-17 (1)
- Вложеное регулярное выражение, михалыч, 08:35 , 01-Апр-17 (2)
> Допустим есть строка вида: > <p>привет</p> &p_not& <p>привет1</p> <p>привет2</p> &p_not& <p>привет10</p> > Можно ли как то составить регулярное выражение чтобы удалить все теги <p> > и </p> заключенные между &p_not& (удалить вместе с &p_not&), но при > этом оставить <p> и </p> которые не входят в "скобки" &p_not&? > Текст может быть очень длинным и "скобок" &p_not& может быть не > одна. Есть ли вообще такая возможность?Я ничего не понял. что в сухом остатке должно получиться? это - <p>привет</p><p>привет10</p> ? тогда так: echo '<p>привет</p> &p_not& <p>привет1</p> <p>привет2</p> &p_not& <p>привет10</p>' | perl -pe 's|(?<=\<\/p\>).*&p_not&.*&p_not&.*(?=\<p\>)||'
- Вложеное регулярное выражение, zhukovia, 14:11 , 01-Апр-17 (3) –1
> Я ничего не понял. > что в сухом остатке должно получиться? > это - <p>привет</p><p>привет10</p> > ? > тогда так: > echo '<p>привет</p> &p_not& <p>привет1</p> <p>привет2</p> &p_not& <p>привет10</p>' > | perl -pe 's|(?<=\<\/p\>).*&p_not&.*&p_not&.*(?=\<p\>)||' Нет должно получиться <p>привет</p> привет1 привет2 <p>привет10</p> Т.е. убрать теги у тех слов что находятся внутри &p_not&.
- Вложеное регулярное выражение, zhukovia, 14:11 , 01-Апр-17 (4) –1
> Я ничего не понял. > что в сухом остатке должно получиться? > это - <p>привет</p><p>привет10</p> > ? > тогда так: > echo '<p>привет</p> &p_not& <p>привет1</p> <p>привет2</p> &p_not& <p>привет10</p>' > | perl -pe 's|(?<=\<\/p\>).*&p_not&.*&p_not&.*(?=\<p\>)||' Нет должно получиться <p>привет</p> привет1 привет2 <p>привет10</p> Т.е. убрать теги у тех слов что находятся внутри &p_not&.
- Вложеное регулярное выражение, михалыч, 18:45 , 01-Апр-17 (5)
> Нет должно получиться <p>привет</p> привет1 привет2 <p>привет10</p> > Т.е. убрать теги у тех слов что находятся внутри &p_not&.если теги не p работать не будет )) | perl -pe 's/&p_not&|<.*?>//g' | perl -pe 's|(^\S+)(\s+.*\s+)(\S+$)|<p>$1</p>$2<p>$3</p>|'
- Вложеное регулярное выражение, zhukovia, 16:25 , 03-Апр-17 (6)
>> Нет должно получиться <p>привет</p> привет1 привет2 <p>привет10</p> >> Т.е. убрать теги у тех слов что находятся внутри &p_not&. > если теги не p работать не будет )) > | perl -pe 's/&p_not&|<.*?>//g' | perl -pe 's|(^\S+)(\s+.*\s+)(\S+$)|<p>$1</p>$2<p>$3</p>|' Не знаю почему, но произошла обратная ситуация теги вне скобок удвоились <p><p>hello</p></p> &p_not& <p>hello1</p> <p>hello2</p> &p_not& <p><p>hello10</p></p>
- Вложеное регулярное выражение, михалыч, 18:26 , 03-Апр-17 (7)
попробуй это
| perl -pe 's/(?\!^<.*?>.*?<.*?>)<.*?>(?=.*?&p_not&)|&p_not&//g' | perl -pe 's|^(<(.*?>).*?)(\s+.*)|$1</$2$3|' от этих упреждающих проверок мозги закипят ))
- Вложеное регулярное выражение, zhukovia, 05:48 , 05-Апр-17 (8)
Вообщем сделал вот так. Может кому понадобится. s{(&p_not&)(.+?)\1}{($x=$2)=~s[</?p>][]mgs;$x}mgse Спасибо большое за помощь.
|