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

Sergodjan

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

Dimionix

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

Sergodjan

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

Dimionix

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

sidor800

Client
Регистрация
16.04.2013
Сообщения
123
Благодарностей
44
Баллы
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 139
Баллы
113
  • Спасибо
Реакции: sidor800

sidor800

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

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 652
Баллы
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
Благодарностей
44
Баллы
28
Подскажите как удалить последнею запятую в конце строки

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

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

doc

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

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

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

sidor800

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

Код:
 <br>


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

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 652
Баллы
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
Сообщения
1 002
Благодарностей
389
Баллы
83
беру текст между тегов <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
Сообщения
1 002
Благодарностей
389
Баллы
83

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 139
Баллы
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 139
Баллы
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 139
Баллы
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 139
Баллы
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 685
Благодарностей
4 652
Баллы
113
Всегда было интересно, что ускоряет регулярки.
(?<=\(([^,]+,){5}\s')[^']+
такое работает быстрее?
 
  • Спасибо
Реакции: toxass

toxass

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

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