Бесплатно напишу регулярное выражение. Часть 2.

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 117
Баллы
113
Подскажите как одним регулярным выражение удалить все теги, но оставить определенные p br img
есть выражение [^\s\d\w-":] удаляет все спецсимволы кроме -": надо что то наподобие но для тегов
сам я в регулярках не очень, тоже было бы интересно взять в актив такую регулярку..
но можно обойтись костылем, напрмиер перед очисткой всех тегов заменить <p на например ###p, <br> на ###br###, <img на ###img
и после очистки всех остальных тегов регуляркой <[^>]*> сделать обратную замену, восстановив исходный вид тех тегов, что заменяли..
 
Последнее редактирование:
  • Спасибо
Реакции: sidor800 и Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Подскажите как одним регулярным выражение удалить все теги, но оставить определенные p br img
сам я в регулярках не очень, тоже было бы интересно взять в актив такую регулярку..
Что-то такое
Код:
<(?!p|/p|br|img).*?>
 
Последнее редактирование:
  • Спасибо
Реакции: sidor800 и Sergodjan

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 117
Баллы
113
  • Спасибо
Реакции: sidor800 и Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

sidor800

Client
Регистрация
16.04.2013
Сообщения
123
Благодарностей
41
Баллы
28
Подскажите как взять текст между src=" " в тегах img в таком коде
Код:
<iframe class="embed-responsive-item" src="https://www.youtube.com/embed/lneNCBIXD4I" allowfullscreen="" frameborder="0"></iframe>
<img alt="Номинанты" title="Номинанты премии B" src="/public/media/amy_post.jpg">
< img  title="Номинанты премии B" alt="Номинанты" src="/public/media/amy_post.jpeg" >
в теги <img может быть пробелы
и в закрывающем теги ">тоже могут быть расширение изображение может быть разное
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
  • Спасибо
Реакции: sidor800

sidor800

Client
Регистрация
16.04.2013
Сообщения
123
Благодарностей
41
Баллы
28
Код:
(?<=< ?img.*src=").*?(?=")
что то в таком коде
Код:
  <p>В “ITunes"&nbsp;прошла премьера альбома памяти <a href="https://24smi.org/celebrity/72-zhanna-friske.html" target="_blank">Жанны Фриске</a>. В музыкальный сборник под названием&nbsp;"Жанна Фриске — Я рядом!" вошли 23 композиции, которые исполнили разные артисты, в число которых вошли&nbsp;<a href="https://24smi.org/celebrity/526-olga-orlova.html" target="_blank">Ольга&nbsp;Орлова</a>, <a href="https://24smi.org/celebrity/677-dzhigan.html" target="_blank">Джиган</a>,&nbsp;<a href="https://24smi.org/celebrity/33-filipp-kirkorov.html" target="_blank">Филипп&nbsp;Киркоров</a>, <a href="https://24smi.org/celebrity/451-vladimir-presnyakov.html" target="_blank">Владимир&nbsp;Пресняков</a>, <a href="https://24smi.org/celebrity/423-anna-semenovich.html" target="_blank">Анна Семенович</a> и другие артисты, которые в прошлом выступали с Жанной на одной сцене, пишет "<a href="http://www.kp.ru/" rel="nofollow" target="_blank">Комсомольская правда</a>".</p><figure><img alt="Альбом памяти Жанны Фриске - &quot;Жанна Фриске - Я рядом!&quot;" title="Альбом памяти Жанны Фриске - &quot;Жанна Фриске - Я рядом!&quot;" src="/public/media/2017/1/13/%D0%91%D0%B5%D0%B7%20%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20(1).jpg"><figcaption><br>Альбом памяти Жанны Фриске - "Жанна Фриске - Я рядом!"<br> | <a href="http://kpcdn.net/" rel="nofollow" target="_blank">КП</a><br></figcaption></figure><p>Идеей для выпуска альбома в память Жанны Фриске стала записанная в&nbsp;феврале 2016&nbsp;года песня&nbsp;«Прощай, мой друг», которую исполнила подруга певицы Ольга Орлова, а слова к ней&nbsp;написал&nbsp;<a href="https://24smi.org/celebrity/165-maksim-fadeev.html" target="_blank">Максим Фадеев</a>. Этот трэк побудил и других артистов российского шоу-бизнеса записать песни в память российской исполнительницы, которая в 2015 году умерла от рака головного мозга.<br></p><iframe width="640" height="360"  src="https://www.youtube.com/embed/AbmqOfYgM40" allowfullscreen="" frameborder="0"></iframe>

<p>Ранее в память Жанны Фриске выпустил книгу ее гражданский супруг <a href="https://24smi.org/celebrity/484-dmitrij-shepelev.html" target="_blank">Дмитрий Шепелев</a>. В ней он изложил все свои воспоминания&nbsp;об умершей возлюбленной. В книге "Жанна" Шепелев поведал все&nbsp;важные&nbsp;моменты&nbsp;из их отношений с Фриске&nbsp;– знакомство, развитие романа и рождение общего сына Платона.&nbsp;<br></p></iframe>
" data-float="none" ><iframe width="640" height="360"  id="instagram-embed-0" src="https://www.instagram.com/p/BM8lun-BRKQ/embed/captioned/?cr=1&amp;v=7" allowtransparency="true" data-instgrm-payload-id="instagram-media-payload-0" scrolling="no"  frameborder="0" ></iframe>


<p><br></p>
берет и с ифрема тоже
 

sidor800

Client
Регистрация
16.04.2013
Сообщения
123
Благодарностей
41
Баллы
28
Как можно заменить <div class="quote">разный текст</div> на
<blockquote>разный текст</blockquote> учитывая что <div class="quote">разный текст</div> встречается не один раз
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Как можно заменить <div class="quote">разный текст</div> на
<blockquote>разный текст</blockquote> учитывая что <div class="quote">разный текст</div> встречается не один раз

<div class="quote">(.+?)</div>
<blockquote>$1</blockquote>

Сработает правильно, только если в диве нет других вложенных дивов
 
  • Спасибо
Реакции: sidor800

sidor800

Client
Регистрация
16.04.2013
Сообщения
123
Благодарностей
41
Баллы
28
Подскажите как удалить последнею запятую в конце строки

текст может быть такой где надо удалить
мультфильм, мюзикл, приключения, семейный,

или такой где не надо удалять
мультфильм, мюзикл, приключения
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Подскажите как удалить последнею запятую в конце строки

текст может быть такой где надо удалить
мультфильм, мюзикл, приключения, семейный,

или такой где не надо удалять
мультфильм, мюзикл, приключения
Можно через обработку текста, ТРИМ, там в свои символы добавить запятую.
Можно через замену по регулярке ,$ на пустоту
 
  • Спасибо
Реакции: sidor800

sidor800

Client
Регистрация
16.04.2013
Сообщения
123
Благодарностей
41
Баллы
28
Как удалить все до начала русского слово

Код:
 <br>


 WEBDLrip<br>Назвать Кэти идеальной
матерью ни у кого и язык не
должно стать
Код:
Назвать Кэти идеальной матерью ни у кого и язык не
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
^[^а-яА-ЯёЁ]+ заменить по регулярке на пустоту
 
  • Спасибо
Реакции: sidor800

Sapfire65

Client
Регистрация
05.06.2016
Сообщения
103
Благодарностей
22
Баллы
18
Уважаемые знатоки. Прошу помощи.
Я реализую очистку и правку текста по своему усмотрению. Делаю это с помощью регулярных выражений с помощью кубиков.
Кубиков получается очень много. Я хотел бы положить все регулярки по очереди например в единый C# код.
Вопрос как это реализовать?

Или может я не знаю каких то нюансов кубиков.
 

Sapfire65

Client
Регистрация
05.06.2016
Сообщения
103
Благодарностей
22
Баллы
18
Или может как то можно делать разделитель такого типа
переменная1|переменная2 далее выполнить переменную3|переменную4

Заменить на: (1-2) следующая группа (3-4) и так далее

Надеюсь поняли мой вопрос.
 

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
Уважаемые знатоки. Прошу помощи.
Я реализую очистку и правку текста по своему усмотрению. Делаю это с помощью регулярных выражений с помощью кубиков.
Кубиков получается очень много. Я хотел бы положить все регулярки по очереди например в единый C# код.
Вопрос как это реализовать?

Или может я не знаю каких то нюансов кубиков.
я бы тебе посоветовал сделать проект в проекте. все кубики обработки вынести в отдельный проект, тогда в основном будет 1 кубик только вызова данного проекта
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
беру текст между тегов <p> </p>, не могу удалить неразрывной пробел из строки &nbsp;
В тексте еще могут присутствовать теги <br>,<strong> и т.д.
<p>Компактные нетбуки, не оснащенные оптическим приводом,&nbsp; мобильны и весьма удобны.</p>
Заранее спасибо)
 

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
беру текст между тегов <p> </p>, не могу удалить неразрывной пробел из строки &nbsp;
В тексте еще могут присутствовать теги <br>,<strong> и т.д.
<p>Компактные нетбуки, не оснащенные оптическим приводом,&nbsp; мобильны и весьма удобны.</p>
Заранее спасибо)
кубик обработка текста/замена
\&nbsp\;
на
пустоту или пробел
а с тэгами можно конечно через исключения заморочиться, но проще гораздо:
обработка текста/ замена
<.*?>
на пустоту
а потом обработка переменной
<p>текстовая переменная</p>
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
таким образом замену сделать не получается,вы пробовали?
только что потестил. Работает.
тип замены regex не забыли поставить?
если тип замены text то слэши экранирования уберите
 
  • Спасибо
Реакции: Sanekk

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
Помогите с поиском и заменой. Пример:
Код:
(578, 'admin', '2014-06-15 13:29:18', 'Заголовок новости 1', '', 'этот кусок нужно достать регуляркой и заменить на свое', 'Заголовок новости 1', '', '', '2', 'url', 0, 1, 1, 1, 0, 1, '', '', 'Заголовок новости 1'),
(580, 'admin', '2014-11-29 09:21:37', 'Заголовок новости 2', '', 'этот кусок нужно достать регуляркой и заменить на свое', 'Заголовок новости 2', '', '', '2', 'url', 0, 1, 1, 1, 0, 1, '', '', 'Заголовок новости 2'),
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Помогите с поиском и заменой. Пример:
Код:
(578, 'admin', '2014-06-15 13:29:18', 'Заголовок новости 1', '', 'этот кусок нужно достать регуляркой и заменить на свое', 'Заголовок новости 1', '', '', '2', 'url', 0, 1, 1, 1, 0, 1, '', '', 'Заголовок новости 1'),
(580, 'admin', '2014-11-29 09:21:37', 'Заголовок новости 2', '', 'этот кусок нужно достать регуляркой и заменить на свое', 'Заголовок новости 2', '', '', '2', 'url', 0, 1, 1, 1, 0, 1, '', '', 'Заголовок новости 2'),
Код:
(?m)(?<=^(.*, ){5}').*?(?='(.*, ){14}.*\))
 
  • Спасибо
Реакции: toxass

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Очень долго делает поиск на выборке из 100к строк. Может есть еще варианты?
Может и можно, но нужно смотреть оригинальный код, к чему там можно привязаться.
Вот, например, при условии что заголовки новости будут состоять только из букв, цифр, нижних подчеркиваний и пробелов
Код:
(?<=\d', '[\w\s]+(', '){2}).*?(?=')
 

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
Может и можно, но нужно смотреть оригинальный код, к чему там можно привязаться.
Вот, например, при условии что заголовки новости будут состоять только из букв, цифр, нижних подчеркиваний и пробелов
Код:
(?<=\d', '[\w\s]+(', '){2}).*?(?=')
(580, 'admin', '2014-11-29 09:21:37', 'Заголовок новости 2', '', 'Вот тут есть уникальный ID в цифровом диапазоне (разном), пример: id|1759323, эти ID я знаю заранее', 'Заголовок новости 2', '', '', '2', 'url', 0, 1, 1, 1, 0, 1, '', '', 'Заголовок новости 2'),
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
(580, 'admin', '2014-11-29 09:21:37', 'Заголовок новости 2', '', 'Вот тут есть уникальный ID в цифровом диапазоне (разном), пример: id|1759323, эти ID я знаю заранее', 'Заголовок новости 2', '', '', '2', 'url', 0, 1, 1, 1, 0, 1, '', '', 'Заголовок новости 2'),
Так попробуй
Код:
(?<=(.* '){5}).*?id\|\d+.*?(?=')
 

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Почти в 6 раз быстрей. Спасибо!
Можно так
Код:
(?<=', '', ').*?id\|\d+.*?(?=')
если только
(580, 'admin', '2014-11-29 09:21:37', 'Заголовок новости 2', 'тут 100% не бывает никаких значений (всегда пусто)', 'Вот тут есть уникальный ID в цифровом диапазоне (разном), пример: id|1759323, эти ID я знаю заранее', 'Заголовок новости 2', '', '', '2', 'url', 0, 1, 1, 1, 0, 1, '', '', 'Заголовок новости 2'),
 
  • Спасибо
Реакции: toxass

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Всегда было интересно, что ускоряет регулярки.
(?<=\(([^,]+,){5}\s')[^']+
такое работает быстрее?
 
  • Спасибо
Реакции: toxass

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
Всегда было интересно, что ускоряет регулярки.
(?<=\(([^,]+,){5}\s')[^']+
такое работает быстрее?
Тут важный фактор в том, что я делаю поиск и замену. Т.е. мне нужно найти только строки, в которых есть ID из моего списка, и заменить их другими. Регулярки выше и ваша, как оказалось, работают по-разному. И скорость плавает, начиная от количества входных строк.
 

Кто просматривает тему: (Всего: 5, Пользователи: 0, Гости: 5)