Помогите с регуляркой
-
Есть текст вида:
<tekst><tekst><h1></h2>
<tekst
tekst
tekst
tekst>
<tekst><tekst>Есть регулярка <(?!h|/h).*?>
которая выбирает <tekst><tekst> но не трогает <h1></h2>
Есть необходимость убрать
<tekst
tekst
tekst
tekst>
Но так как он с новой строки, то этой регуляркой он не убирается, как усовершенствовать регулярку <(?!h|/h).*?> чтобы она начала убирать и текст с новой строки?
-
@Samael_96 Может всё таки использовать Xpath для парсинга html?
-
@fox said in Помогите с регуляркой:
Xpath для парсинга html?
Можно. Но тут в другом ситуация. Вообще возможно это сделать или слишком сложно?
-
@samael_96 said in Помогите с регуляркой:
@fox said in Помогите с регуляркой:
Xpath для парсинга html?
Можно. Но тут в другом ситуация. Вообще возможно это сделать или слишком сложно?
Скорее ненадёжно. Для регулярок приведите пару примеров текста (чтобы узнать, что меняется, а что нет) и что нужно из него получить.
-
А какой результат должен быть?
-
@fox
Имеем такой текст на входе:<tekst><tekst><h1></h2> <tekst tekst tekst tekst> <tekst><tekst>
теги <h1></h2> должны остаться, все остальное должно уйти.
Пока что мне удалось такую регулярку сделать<(?!h|/h).*?>
Она удаляет все между этими скобками
<>
Кроме тегов <h1></h1>-...<h6></h6>-
Но, есть одно исключение, вот этот текст:<tekst tekst tekst tekst>
между <> она не убирает потому, что он с новой строки начинается.
-
@samael_96 said in Помогите с регуляркой:
@fox
Имеем такой текст на входе:<tekst><tekst><h1></h2> <tekst tekst tekst tekst> <tekst><tekst>
теги <h1></h2> должны остаться, все остальное должно уйти.
Пока что мне удалось такую регулярку сделать<(?!h|/h).*?>
Она удаляет все между этими скобками
<>
Кроме тегов <h1></h1>-...<h6></h6>-
Но, есть одно исключение, вот этот текст:<tekst tekst tekst tekst>
между <> она не убирает потому, что он с новой строки начинается.
Действие "первое вхождение" с регуляркой:
<h1>(.*?)<\/h2>
Я так понимаю нужен текст между этими тегами?
-
@fox said in Помогите с регуляркой:
Я так понимаю нужен текст между этими тегами?
Немножко не то. Сори, за потраченное время. Я наверное слишком многое от одного регулярного выражения хочу, тут надо комплекс решений на БАС-е организовать.
-
@samael_96 а так не подойдет?
[\s\S]+(<h1></h2>)[\s\S]+
-
@symposium :) нет, мне надо, вот кусок html кода который выдран с этой страницы
<p><a class="plugin-mentions-user plugin-mentions-a" href="http://community.bablosoft.com//uid/394">@fox</a> said in <a href="/post/40221">Помогите с регуляркой</a>:</p> <blockquote> <p>Xpath для парсинга html?</p> </blockquote> <p>Можно. Но тут в другом ситуация. Вообще возможно это сделать или слишком сложно?</p> </blockquote> <p>Скорее ненадёжно. Для регулярок приведите пару примеров текста (чтобы узнать, что меняется, а что нет) и что нужно из него получить.</p> </div> <div class= "clearfix post-footer">
Мне надо оставить текст, и удалить html коды, это делается регуляркой (<+?[\s\S]+?>+?), но она удаляет абсолютно все что находится между <>, а мне разметку надо оставить. <h1> прочие теги тут уже какие тебе надо, это делается регуляркой <(?!h|/h).*?> но у нее другой недостаток. Она не удаляет, между <> если они начинаются с новой строки, например так
<div class= "clearfix post-footer">
А мне надо регулярка которая чистит от html кода но оставляет нужные мне теги, и удаляет c тем условием что я выше уже описал.
Вот такой вот сложный вопрос, и чувствует моя 5-я точка, что надо было мне пойти по длинному пути еще утром, ибо с утра сижу, блин уже 9 часов вечера, кошмар.
-
@samael_96 said in Помогите с регуляркой:
@symposium :) нет, мне надо, вот кусок html кода который выдран с этой страницы
<p><a class="plugin-mentions-user plugin-mentions-a" href="http://community.bablosoft.com//uid/394">@fox</a> said in <a href="/post/40221">Помогите с регуляркой</a>:</p> <blockquote> <p>Xpath для парсинга html?</p> </blockquote> <p>Можно. Но тут в другом ситуация. Вообще возможно это сделать или слишком сложно?</p> </blockquote> <p>Скорее ненадёжно. Для регулярок приведите пару примеров текста (чтобы узнать, что меняется, а что нет) и что нужно из него получить.</p> </div> <div class= "clearfix post-footer">
Мне надо оставить текст, и удалить html коды, это делается регуляркой (<+?[\s\S]+?>+?), но она удаляет абсолютно все что находится между <>, а мне разметку надо оставить. <h1> прочие теги тут уже какие тебе надо, это делается регуляркой <(?!h|/h).*?> но у нее другой недостаток. Она не удаляет, между <> если они начинаются с новой строки, например так
<div class= "clearfix post-footer">
А мне надо регулярка которая чистит от html кода но оставляет нужные мне теги, и удаляет c тем условием что я выше уже описал.
Вот такой вот сложный вопрос, и чувствует моя 5-я точка, что надо было мне пойти по длинному пути еще утром, ибо с утра сижу, блин уже 9 часов вечера, кошмар.Оно?
<(?!h|\/h).*?[\s\S]*?>
-
@fox Спасибо тебе Fox большое. А я уже почти костыль доваял :)