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

Всё отлично работает! Спасибо за помощь doc! :ay:
 
Подскажите, как можно получить несколько значений в скобках [?] и между кавычками текст???. или одним разом не получится? хотелось бы одну регулярку, чтобы в снипет ее засунуть и выбрать совпадения, например ид категории и название и сунуть в масив

Код:
Развернуть Свернуть Копировать
category[89] = "Заработок в интернете";
category[тут получить] = "и тут получить";

никак не пойму
что не так с регуляркой?

Код:
Развернуть Свернуть Копировать
category.*?\[[0-9]{1,8}\].*=.*\".*?\";
 
всем привет! Как очистить текст от кода?

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">Дарья Тонких, 

пример кода, что только не пробовал. все равно где то остается. код постоянно меняется и я не могу решить эту пррьлему только заменой. подскажите как быть
 
может так, надо проверять.... сейчас не дома..проверить не могу
Код:
Развернуть Свернуть Копировать
(?<=<p.*>)[\w\W]*?(?=(\n|<))

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

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
как то вы парни неправильно это все делаете. Вот так вроде по феншую, сработает и когда там больше разных 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>
 
И что больше всего мыкает, вот эти значения
"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;">
постоянно меняются, не могу их побороть заменой
Ну опять та же проблема на лицо:
У вас обрезана открывающая часть HTML-тега. Там должно быть что-то типа:
Код:
Развернуть Свернуть Копировать
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">
Либо заменами приведите начальный текст к валидному HTML-коду, либо перенастройте процесс парсинга кода так, чтобы он не резал теги. Второй вариант правильнее будет.
 
  • Спасибо
Реакции: Fedor5588
Ну опять та же проблема на лицо:
У вас обрезана открывающая часть HTML-тега. Там должно быть что-то типа:
Код:
Развернуть Свернуть Копировать
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 1cm; line-height: normal;">
Либо заменами приведите начальный текст к валидному HTML-коду, либо перенастройте процесс парсинга кода так, чтобы он не резал теги. Второй вариант правильнее будет.
Понял! Вроде заработало) спасибо вам!
 
подскажите пожалуйста как получить из полного адреса страницы адрес только главной страницы?
например из 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/thre...i-iz-url-uri-don-shampinon.33559/#post-245122
https://msdn.microsoft.com/ru-ru/library/system.uri(v=vs.110).aspx
 
Последнее редактирование:
  • Спасибо
Реакции: santers3
а если нужно получить из полного адреса страницы всё кроме главной страницы?
например из 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
ты можешь произвести замену по той же регулярке
 
А подскажите ещё такой момент. Мне нужно прикрутить логику, если в переменной допустим текста меньше 30 слов ну или символов N кол-ва, то действие не выполняется. Как это можно реализовать?

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

Есть список вида:
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
 
Подскажите регулярку пожалуйста

Есть список вида:
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
Спасибо. Для строки данная регулярка подходит. Однако для списка выдает только последнее значение в списке
[^/]+$
 
Подскажите пожалуйста регулярку чтобы обрезала последнюю букву слова. Слов 1млн., ручками нереально просто:
автобусе
автомату
автомобиле
автомобиля
адлера
адреса
 
Подскажите пожалуйста регулярку чтобы обрезала последнюю букву слова. Слов 1млн., ручками нереально просто:
автобусе
автомату
автомобиле
автомобиля
адлера
адреса
Код:
Развернуть Свернуть Копировать
\w\b
 
  • Спасибо
Реакции: RusVolkof
Помогите, я торможу. Есть строка :
<a href="consultantplus://offline/ref=C489FEFBFF4747DCA4779C0A55205FFEE81CA3372DD18C3223EFDB6ED6U9EBN">N 24-11/58949</a>
Как сделать replace чтобы от нее осталось только N 24-11/58949
 
Не, ну логично, но проблема в том что тогда все html теги удалятся. А мне нужно удалить только ссылки начинающиеся на <a href="consultantplus
тебе дали решение по твоему вопросу. А теперь оказывается, что вопрос был неполный. Не делай так
<a href="consultantplus://offline/ref=[^"]+">([^<]+)</a>
заменить по регулярке на $1
 
  • Спасибо
Реакции: Dimionix
Не, ну логично, но проблема в том что тогда все html теги удалятся. А мне нужно удалить только ссылки начинающиеся на <a href="consultantplus
тебе дали решение по твоему вопросу. А теперь оказывается, что вопрос был неполный. Не делай так
Именно!
Что касается вопроса, то заменить <a href="consultantplus.*?">([\w\W]*?)</a> на $1
 
Благодарю покорно.
 

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