Регулярные выражения на все случаи жизни

twitter

Client
Регистрация
05.09.2013
Сообщения
20
Благодарностей
8
Баллы
3
Всё отлично работает! Спасибо за помощь doc! :ay:
 

ZAKSEO

Новичок
Регистрация
04.06.2016
Сообщения
11
Благодарностей
1
Баллы
3
Подскажите, как можно получить несколько значений в скобках [?] и между кавычками текст???. или одним разом не получится? хотелось бы одну регулярку, чтобы в снипет ее засунуть и выбрать совпадения, например ид категории и название и сунуть в масив

Код:
category[89] = "Заработок в интернете";
category[тут получить] = "и тут получить";
никак не пойму
что не так с регуляркой?

Код:
category.*?\[[0-9]{1,8}\].*=.*\".*?\";
 

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
272
Благодарностей
69
Баллы
28
всем привет! Как очистить текст от кода?

p style="margin: 0cm 0cm 0.0001pt; text-align: justify; text-indent: 1cm; background-color: white;">Дальневосточный центр онлайн-обучения начнет работу в Дальневосточном федеральном университете (ДВФУ) в октябре 2017 года. Вуз выиграл конкурс Министерства образования и науки РФ на участие в приоритетном проекте «Современная цифровая образовательная среда в Российской Федерации».
p style="font-family: Arial, Tahoma, Verdana, sans-serif; background-color: rgb(255, 255, 255); margin-top: 0px; margin-bottom: 0px; line-height: 1.2;">
p style="margin: 0cm 0cm 0.0001pt; text-indent: 1cm; background-color: white;" align="right">Дарья Тонких, 

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

ZAKSEO

Новичок
Регистрация
04.06.2016
Сообщения
11
Благодарностей
1
Баллы
3

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
272
Благодарностей
69
Баллы
28
может так, надо проверять.... сейчас не дома..проверить не могу
Код:
(?<=<p.*>)[\w\W]*?(?=(\n|<))
А каким экшеном прикрутить эту регулярку чтобы он именно удалил код? обработка текста regex ? просто таким методом он сохраняет в список, в моем случае было бы удобнее в переменную
 

ZAKSEO

Новичок
Регистрация
04.06.2016
Сообщения
11
Благодарностей
1
Баллы
3
А каким экшеном прикрутить эту регулярку
Экшен "свой код c#"
Код:
string pattern = @"(?<=<p.*>)[\w\W]*?(?=(\n|<))";
Regex getStroka = new Regex(pattern);
string itog = getStroka.Matches(сюда текст обработки)[0].Value;
return itog;
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 165
Благодарностей
2 165
Баллы
113
всем привет! Как очистить текст от кода?

p style="margin: 0cm 0cm 0.0001pt; text-align: justify; text-indent: 1cm; background-color: white;">Дальневосточный центр онлайн-обучения начнет работу в Дальневосточном федеральном университете (ДВФУ) в октябре 2017 года. Вуз выиграл конкурс Министерства образования и науки РФ на участие в приоритетном проекте «Современная цифровая образовательная среда в Российской Федерации».
p style="font-family: Arial, Tahoma, Verdana, sans-serif; background-color: rgb(255, 255, 255); margin-top: 0px; margin-bottom: 0px; line-height: 1.2;">
p style="margin: 0cm 0cm 0.0001pt; text-indent: 1cm; background-color: white;" align="right">Дарья Тонких,&nbsp;

пример кода, что только не пробовал. все равно где то остается. код постоянно меняется и я не могу решить эту пррьлему только заменой. подскажите как быть
как то вы парни неправильно это все делаете. Вот так вроде по феншую, сработает и когда там больше разных HTML тэгов будет, одним C# кубиком:
Код:
string Text = project.Variables["Text_obrabotki"].Value; //сюда текст обработки (из переменной Text_obrabotki)
Text = System.Text.RegularExpressions.Regex.Replace(Text, @"(?<=[^<]|^)p style", "<p style", System.Text.RegularExpressions.RegexOptions.IgnoreCase); // вместо "p style=" ставим нормальный открывающий тэг "<p style="
Text = System.Net.WebUtility.HtmlDecode(Text); // делаем HtmlDecode (оно ка раз почти идеально вытягивает текстовку с Html кода, заменяет всякие символы &nbsp на нормальный вид
Text = System.Text.RegularExpressions.Regex.Replace(Text, @"<script[\w\W]*?</script>|<style[\w\W]*?</style>|<[\w\W]*?>|(\<br ?/?\>[^\S \    ]*(\r|\n)[^\S \    ]*)", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase ); // заменяем весь остальной мусор, что не подчистил HtmlDecode на пустоту (или замените на пробел)
Text = System.Text.RegularExpressions.Regex.Replace(Text, @" +", " "); // заменяем множество пробелов на 1
return Text;
 
Последнее редактирование:
  • Спасибо
Реакции: ZAKSEO

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
272
Благодарностей
69
Баллы
28
как то вы парни неправильно это все делаете. Вот так вроде по феншую, сработает и когда там больше разных HTML тэгов будет, одним C# кубиком:
Код:
string Text = project.Variables["Text_obrabotki"].Value; //сюда текст обработки (из переменной Text_obrabotki)
Text = System.Text.RegularExpressions.Regex.Replace(Text, @"(?<=[^<]|^)p style", "<p style", System.Text.RegularExpressions.RegexOptions.IgnoreCase); // вместо "p style=" ставим нормальный открывающий тэг "<p style="
Text = System.Net.WebUtility.HtmlDecode(Text); // делаем HtmlDecode (оно ка раз почти идеально вытягивает текстовку с Html кода, заменяет всякие символы &nbsp на нормальный вид
Text = System.Text.RegularExpressions.Regex.Replace(Text, @"<script[\w\W]*?</script>|<style[\w\W]*?</style>|<[\w\W]*?>|(\<br ?/?\>[^\S \    ]*(\r|\n)[^\S \    ]*)", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase ); // заменяем весь остальной мусор, что не подчистил HtmlDecode на пустоту (или замените на пробел)
Text = System.Text.RegularExpressions.Regex.Replace(Text, @" +", " "); // заменяем множество пробелов на 1
return Text;
Спасибо за помощь!) но все равно остается:

После обработки

"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">1 октября вся Россия отмечает День пожилого человека. В этот праздник самые теплые слова должны быть адресованы представителям старшего поколения, подчеркнул Губернатор Приморья Владимир Миклушевский.
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">Глава региона отметил, что сегодня – только один из поводов поблагодарить своих близких почтенного возраста за мудрость, доброту и терпение, за заботу и любовь.
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">«У всех нас есть близкие и дорогие сердцу люди, те, кому мы обязаны жизнью – наши родители, бабушки и дедушки. Конечно, они дороги нам вне зависимости от даты на календаре, но сегодняшний день – это еще один повод сказать им о том, как мы любим их, как дорожим ими и как благодарны им за все, что они нам подарили», – обратился к жителям региона Губернатор.
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">Владимир Миклушевский поздравляет старшее поколение приморцев с праздником, желает им крепкого здоровья, благополучия, долгих лет жизни, внимания детей и внуков.
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">Напомним, сегодня в Приморье стартует декада пожилого человека. В эти дни консолидируются все социальные службы, предприниматели, общественные организации, молодежь.
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: right; text-indent: 1cm; line-height: normal;" align="right">
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">


До обработки


"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;"><font face="Arial" size="2"><b>1 октября вся Россия отмечает День пожилого человека. В этот праздник самые теплые слова должны быть адресованы представителям старшего поколения, подчеркнул Губернатор Приморья Владимир Миклушевский.&nbsp;</b></font>
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;"><font face="Arial" size="2">Глава региона отметил, что сегодня – только один из поводов поблагодарить своих близких почтенного возраста за мудрость, доброту и терпение, за заботу и любовь.&nbsp;</font>
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;"><font face="Arial" size="2">«У всех нас есть близкие и дорогие сердцу люди,&nbsp;те, кому мы обязаны жизнью – наши родители, бабушки и дедушки. Конечно, они дороги нам вне зависимости от даты на календаре, но сегодняшний день – это еще один повод сказать им о том, как мы любим их, как дорожим ими и как благодарны им за все, что они нам подарили», – обратился к жителям региона Губернатор.&nbsp;</font>
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;"><font face="Arial" size="2">Владимир Миклушевский поздравляет старшее поколение приморцев с праздником, желает им крепкого здоровья, благополучия, долгих лет жизни, внимания детей и внуков.&nbsp;</font>
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;"><font face="Arial" size="2">Напомним, сегодня в Приморье стартует декада пожилого человека. В эти дни консолидируются все социальные службы, предприниматели, общественные организации, молодежь.</font>
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: right; text-indent: 1cm; line-height: normal;" align="right"><font face="Arial" size="2"><b><i>, </i></b><b><i><a href="mailto:">veka<span lang="RU">_</span>ea<span lang="RU">@</span>primorsky<span lang="RU">.</span>ru</a></i></b></font>
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;"><font face="Arial" size="2">&nbsp;</font><font face="Arial" size="2"></font>
 

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
272
Благодарностей
69
Баллы
28
И что больше всего мыкает, вот эти значения
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">
постоянно меняются, не могу их побороть заменой
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 165
Благодарностей
2 165
Баллы
113
И что больше всего мыкает, вот эти значения
"MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">
постоянно меняются, не могу их побороть заменой
Ну опять та же проблема на лицо:
У вас обрезана открывающая часть HTML-тега. Там должно быть что-то типа:
Код:
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">
Либо заменами приведите начальный текст к валидному HTML-коду, либо перенастройте процесс парсинга кода так, чтобы он не резал теги. Второй вариант правильнее будет.
 
  • Спасибо
Реакции: Fedor5588

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
272
Благодарностей
69
Баллы
28
Ну опять та же проблема на лицо:
У вас обрезана открывающая часть HTML-тега. Там должно быть что-то типа:
Код:
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">
Либо заменами приведите начальный текст к валидному HTML-коду, либо перенастройте процесс парсинга кода так, чтобы он не резал теги. Второй вариант правильнее будет.
Понял! Вроде заработало) спасибо вам!
 

santers3

Client
Регистрация
24.07.2017
Сообщения
32
Благодарностей
1
Баллы
8

orka13

Client
Регистрация
07.05.2015
Сообщения
2 165
Благодарностей
2 165
Баллы
113
подскажите пожалуйста как получить из полного адреса страницы адрес только главной страницы?
например из http://zennolab.com/discussion/threads/reguljarnye-vyrazhenija-na-vse-sluchai-zhizni.20829/page-17
получить http://zennolab.com/
Код:
https?://.*?\/
Это универсальная регулярка и под https. Или можно правильнее через C# URI, вот материал по теме:
http://zennolab.com/discussion/threads/poluchenie-domennogo-imeni-iz-url-uri-don-shampinon.33559/#post-245122
https://msdn.microsoft.com/ru-ru/library/system.uri(v=vs.110).aspx
 
Последнее редактирование:
  • Спасибо
Реакции: santers3

santers3

Client
Регистрация
24.07.2017
Сообщения
32
Благодарностей
1
Баллы
8

santers3

Client
Регистрация
24.07.2017
Сообщения
32
Благодарностей
1
Баллы
8

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
а если нужно получить из полного адреса страницы всё кроме главной страницы?
например из http://zennolab.com/discussion/threads/reguljarnye-vyrazhenija-na-vse-sluchai-zhizni.20829/page-17
получить /discussion/threads/reguljarnye-vyrazhenija-na-vse-sluchai-zhizni.20829/page-17
ты можешь произвести замену по той же регулярке
 

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
272
Благодарностей
69
Баллы
28
А подскажите ещё такой момент. Мне нужно прикрутить логику, если в переменной допустим текста меньше 30 слов ну или символов N кол-ва, то действие не выполняется. Как это можно реализовать?

И ещё одна логика, проверить в переменной на наличие допустим слова «Москва» если слово есть то действие не выполняется
 

Mutant

Client
Регистрация
19.09.2014
Сообщения
187
Благодарностей
36
Баллы
28
Подскажите регулярку пожалуйста

Есть список вида:
domen.ru/2016/10/09/sovest
domen.ru/2017/08/09/10vesheystrah
domen.ru/2017/09/08/sogretnogi
domen.ru/2017/10/08/robocot

на выходе нужно получить только то что идет после последнего слеша, соответственно:

sovest
10vesheystrah
sogretnogi
robocot
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Подскажите регулярку пожалуйста

Есть список вида:
domen.ru/2016/10/09/sovest
domen.ru/2017/08/09/10vesheystrah
domen.ru/2017/09/08/sogretnogi
domen.ru/2017/10/08/robocot

на выходе нужно получить только то что идет после последнего слеша, соответственно:

sovest
10vesheystrah
sogretnogi
robocot
[^/]+$
 
  • Спасибо
Реакции: Mutant

Mutant

Client
Регистрация
19.09.2014
Сообщения
187
Благодарностей
36
Баллы
28
Спасибо. Для строки данная регулярка подходит. Однако для списка выдает только последнее значение в списке
[^/]+$
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113

RusVolkof

Client
Регистрация
31.07.2015
Сообщения
6
Благодарностей
0
Баллы
3
Подскажите пожалуйста регулярку чтобы обрезала последнюю букву слова. Слов 1млн., ручками нереально просто:
автобусе
автомату
автомобиле
автомобиля
адлера
адреса
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 165
Благодарностей
2 165
Баллы
113
Подскажите пожалуйста регулярку чтобы обрезала последнюю букву слова. Слов 1млн., ручками нереально просто:
автобусе
автомату
автомобиле
автомобиля
адлера
адреса
Код:
\w\b
 
  • Спасибо
Реакции: RusVolkof

RusVolkof

Client
Регистрация
31.07.2015
Сообщения
6
Благодарностей
0
Баллы
3

Onegogh

Client
Регистрация
23.12.2015
Сообщения
14
Благодарностей
2
Баллы
3
Помогите, я торможу. Есть строка :
<a href="consultantplus://offline/ref=C489FEFBFF4747DCA4779C0A55205FFEE81CA3372DD18C3223EFDB6ED6U9EBN">N 24-11/58949</a>
Как сделать replace чтобы от нее осталось только N 24-11/58949
 

Dimionix

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

Onegogh

Client
Регистрация
23.12.2015
Сообщения
14
Благодарностей
2
Баллы
3

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Не, ну логично, но проблема в том что тогда все html теги удалятся. А мне нужно удалить только ссылки начинающиеся на <a href="consultantplus
тебе дали решение по твоему вопросу. А теперь оказывается, что вопрос был неполный. Не делай так
<a href="consultantplus://offline/ref=[^"]+">([^<]+)</a>
заменить по регулярке на $1
 
  • Спасибо
Реакции: Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Не, ну логично, но проблема в том что тогда все html теги удалятся. А мне нужно удалить только ссылки начинающиеся на <a href="consultantplus
тебе дали решение по твоему вопросу. А теперь оказывается, что вопрос был неполный. Не делай так
Именно!
Что касается вопроса, то заменить <a href="consultantplus.*?">([\w\W]*?)</a> на $1
 

Onegogh

Client
Регистрация
23.12.2015
Сообщения
14
Благодарностей
2
Баллы
3
Благодарю покорно.
 

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