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

Nord

Client
Регистрация
22.03.2012
Сообщения
2 414
Благодарностей
1 481
Баллы
113

bitport

Client
Регистрация
15.10.2016
Сообщения
117
Благодарностей
14
Баллы
18

Nord

Client
Регистрация
22.03.2012
Сообщения
2 414
Благодарностей
1 481
Баллы
113
  • Спасибо
Реакции: bitport и nexx1

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 427
Баллы
113
Товарищи помогите решить проблему. Есть список, нужно получить цену.

(?<=-\ ).*?(?=\ ₽\ ) Этой регуляркой получаю, но если в строке ещё одна цифра, то результат такой "134 (KS слюда) - 50"

Как получать только последнее число в строке?

Космос (KS картон) - 50 ₽
Родоппи ( KS картон) - 50 ₽
Opal (KS слюда) - 50 ₽
Ту - 134 (KS слюда) - 50 ₽
C#:
var s = project.Variables["trash"].Value;
return Regex.Match(s, @"(\d+)(?=\s*₽)", RegexOptions.RightToLeft).Value ?? "null";
Все уже придумано. Прикольно.
1695204186169.png
Кубиком Обработка текста->Regex (\d+)(?=\s*₽)
 
Последнее редактирование:
  • Спасибо
Реакции: bitport

nexx1

Client
Регистрация
16.08.2016
Сообщения
284
Благодарностей
101
Баллы
43
  • Спасибо
Реакции: bitport

bitport

Client
Регистрация
15.10.2016
Сообщения
117
Благодарностей
14
Баллы
18

Mitnik

Client
Регистрация
22.12.2014
Сообщения
122
Благодарностей
6
Баллы
18
Подскажите, пожалуйста, как составить регулярку, которая будет определять с заглавной ли буквы (кириллица) написано первое слово фразы или со строчной?
Задача - отсортировать в таблице строки, в которых в определенном столбце прописаны фразы, у которых и нужно определить - заглавная первая буква или строчная.
 

Nord

Client
Регистрация
22.03.2012
Сообщения
2 414
Благодарностей
1 481
Баллы
113
^[А-Я] - с заглавной

Подскажите, пожалуйста, как составить регулярку, которая будет определять с заглавной ли буквы (кириллица) написано первое слово фразы или со строчной?
Задача - отсортировать в таблице строки, в которых в определенном столбце прописаны фразы, у которых и нужно определить - заглавная первая буква или строчная.
 
  • Спасибо
Реакции: Mitnik

Mitnik

Client
Регистрация
22.12.2014
Сообщения
122
Благодарностей
6
Баллы
18

Grush20

Client
Регистрация
27.07.2017
Сообщения
32
Благодарностей
5
Баллы
8
Всем привет. А почему в конструкторе регулярных выражений нет поля "искомый текст содержит"?

Можно ли как-то сразу выбрать регуляркой, например, один параграф из множества, включая теги <p> и </p> содержащий в себе определённое слово или число? Параграфы содержат по несколько строк, а не одну.

Попробовал так: <p>[\w\W]*Нужная[\w\W]*?</p> в регулярку засунуть нужный признак строки - берёт вместе с параграфами которые выше, если таковые имеются.



Образец параграфов:
C#:
<p>
Первая строка
Вторая строка
Какая-то строка
</p>

<p>
Первая строка
Вторая строка
Нужная строка
</p>

<p>
Первая строка
Вторая строка
Ненужная строка
</p>
 
Последнее редактирование:

slavyn8213

Client
Регистрация
28.10.2018
Сообщения
261
Благодарностей
60
Баллы
28
может точки не хватает? я не могу сейчас проверить <p>[\w\W]*Нужная[\w\W].*?</p>
 

Grush20

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

slavyn8213

Client
Регистрация
28.10.2018
Сообщения
261
Благодарностей
60
Баллы
28
<p>([^<]*\bНужная\b[^<]*)<\/p>
 
  • Спасибо
Реакции: Grush20

Grush20

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

slavyn8213

Client
Регистрация
28.10.2018
Сообщения
261
Благодарностей
60
Баллы
28
GPT
  • <p>: Соответствует открывающему тегу <p>.
  • ([^<]*\bнужная\b[^<]*): Сопоставляет текст, содержащий слово "нужная" внутри тегов <p>, исключая другие теги.
  • <\/p>: Соответствует закрывающему тегу </p>.
 
  • Спасибо
Реакции: Grush20

K R

Client
Регистрация
14.01.2017
Сообщения
134
Благодарностей
143
Баллы
43
Спасибо, так пашет! А не подскажите как называются эти галочки в скобочках? Как найти про них почитать подробнее?
Символ ^ в квадратных скобках ставится перед тем символом, которого не должно быть в искомом фрагменте текста.
Выражение [^<]* означает, что после <p> могут быть любые символы кроме <. То есть будут взяты все символы до <.
Соответственно регулярное выражение не выйдет за рамки одного абзаца.

Информации по регуляркам много. Вот, например, на хабре.
 
  • Спасибо
Реакции: seodamage и Grush20

ALev

Новичок
Регистрация
10.01.2024
Сообщения
1
Благодарностей
0
Баллы
1
Ребят, требуется регулярное выражение для EmEditor. Оно у меня будет сложным, но мне хотя бы важно разобраться с его принципом. И так, требуется найти все слова целиком вне зависимости от регистра "аа" и заменить их на "аб", при этом сохранив регистр заменяемого слова. То есть, исходное слово может быть: аа, АА, Аа, аА.
Для "Найти", вот хотя бы есть рабочие вариант:
\b[Аа][Аа]\b
\b([Аа])([Аа])\b
А заменить каким выражением?
Для приведённого примера, результат работы выражения должен преобразовать в: аб, АБ, Аб, аБ.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
191
Баллы
43
Ребят, требуется регулярное выражение для EmEditor. Оно у меня будет сложным, но мне хотя бы важно разобраться с его принципом. И так, требуется найти все слова целиком вне зависимости от регистра "аа" и заменить их на "аб", при этом сохранив регистр заменяемого слова. То есть, исходное слово может быть: аа, АА, Аа, аА.
Для "Найти", вот хотя бы есть рабочие вариант:
\b[Аа][Аа]\b
\b([Аа])([Аа])\b
А заменить каким выражением?
Для приведённого примера, результат работы выражения должен преобразовать в: аб, АБ, Аб, аБ.
Тут нужно создать словарь в котором вы руками пропишите все возможные варианты и соответственно все возможные варианты на которые надо заменить

C#:
string[] aaDictionary = { "aa","AA","Aa","aA" };
string[] abDictionary = {  "ab","AB","Ab", "aB" };

string str = project.Variables["text"].Value;
    int i = 0;
    while (i < abDictionary.Length)
    {
        str = str.Replace(aaDictionary[i], abDictionary[i]);
        i++;
    }

return str;
1704925113217.png

PS. В моем примере английские буквы
 

mr. Nik

Client
Регистрация
15.03.2023
Сообщения
2
Благодарностей
0
Баллы
1
Уважаемые форумчане. Есть регулярка, которая парсила с канала урл, картинку, описание и короткую ссылку, затем складывала все в таблицу; но в определенный момент она перестала работать, прошу помощи!

Канал в телеграмме https://t.me/s/darom_ali

Регулярка: (?<=<a\ class="tgme_widget_message_photo_wrap)[\w\W]*?(https://t\.me/darom_ali/.*?(?="))[\w\W]*?(https://cdn4\.telegram\-cdn\.org/.*?(?='))[\w\W]*?((?<=<b>).*?(?=<br>))[\w\W]*?((?<=<a\ href=")[\w\W]*?(?="))[\w\W]*?()[\w\W]*?(?=<div\ class="tgme_widget_message_footer\ compact\ js-message_footer">)

Подскажите пожалуйста, где в ней ошибка почему перестала работать?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 914
Благодарностей
9 322
Баллы
113
Уважаемые форумчане. Есть регулярка, которая парсила с канала урл, картинку, описание и короткую ссылку, затем складывала все в таблицу; но в определенный момент она перестала работать, прошу помощи!

Канал в телеграмме https://t.me/s/darom_ali

Регулярка: (?<=<a\ class="tgme_widget_message_photo_wrap)[\w\W]*?(https://t\.me/darom_ali/.*?(?="))[\w\W]*?(https://cdn4\.telegram\-cdn\.org/.*?(?='))[\w\W]*?((?<=<b>).*?(?=<br>))[\w\W]*?((?<=<a\ href=")[\w\W]*?(?="))[\w\W]*?()[\w\W]*?(?=<div\ class="tgme_widget_message_footer\ compact\ js-message_footer">)

Подскажите пожалуйста, где в ней ошибка почему перестала работать?
Возможно, длинный составной класс class="tgme_widget_message_footer\ compact\ js-message_footer" и/или class="tgme_widget_message_photo поменялся.

Может кто-то подтянется, подскажет.
У меня пока нет возможности проверить, к сожалению.
 

noble

Пользователь
Регистрация
09.10.2014
Сообщения
177
Благодарностей
10
Баллы
18
Дорый.
Поскажите как мне уделить все после первого пробела?
252,00 грн|В КОРЗИНУ|2 кг срок до 14.04.24 г|S2_2-sk|965,00 грн|500,00 грн|В КОРЗИНУ|2 кг|S2_2|965,00 грн|В КОРЗИНУ|11,4 кг скидка!|S2_11,4-ak|3 685,00 грн|2 579,00 грн|В КОРЗИНУ|20 кг (breeder)|S2_20|6 134,00 грн|В КОРЗИНУ

То есть у меня должно остаться 252,00
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
(?<=\ ).* заменить на пустоту
 
  • Спасибо
Реакции: noble

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 857
Благодарностей
1 579
Баллы
113

noble

Пользователь
Регистрация
09.10.2014
Сообщения
177
Благодарностей
10
Баллы
18
Оправка - после первого знаска |
Т.к. тесты показали, что если попадется числовое значение записанное таким боразом - 2 579,00 грн то в переменную сохраняется только двойка.
Спс за помощь
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 343
Благодарностей
667
Баллы
113
Оправка - после первого знаска |
Т.к. тесты показали, что если попадется числовое значение записанное таким боразом - 2 579,00 грн то в переменную сохраняется только двойка.
Спс за помощь
Попробуйте не регуляркой, а методом Split. Как мне кажется, в этой ситуации он более подходящий)
 
  • Спасибо
Реакции: noble

noble

Пользователь
Регистрация
09.10.2014
Сообщения
177
Благодарностей
10
Баллы
18
спс не знал про Split, пригодиться в других проекта.
Нужная регулярка выглядит так: ^(.*?)грн|.*$
Я вообще до сегодня не знал чтоесть язык регулярных выроже т.к. мне это не нужо было))))
 

k0refun

Новичок
Регистрация
14.05.2023
Сообщения
16
Благодарностей
3
Баллы
3
Уважаемые знатоки! Помогите, пжлста, с регуляркой, которая будет искать незакрытые теги </p>. Столкнулся с такой напастью, что после парсинга сайта попадаются статьи, где у некоторых предложений отсутствует закрывающий тег </p>. Нужна регулярка которая будет проставлять закрывающие теги, вот пример:


<h2>здесь какой то текст</h2>
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст.
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст:
<ul>
<li>здесь какой то текст</li>
<li>здесь какой то текст</li>
</ul>
<p>здесь какой то текстздесь какой то текстздесь какой то текст
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст</p>
<p>здесь какой то текстздесь какой то текстздесь какой то текст
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст</p>
 

PussyM

Client
Регистрация
08.04.2019
Сообщения
69
Благодарностей
21
Баллы
8
Уважаемые знатоки! Помогите, пжлста, с регуляркой, которая будет искать незакрытые теги </p>. Столкнулся с такой напастью, что после парсинга сайта попадаются статьи, где у некоторых предложений отсутствует закрывающий тег </p>. Нужна регулярка которая будет проставлять закрывающие теги, вот пример:


<h2>здесь какой то текст</h2>
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст.
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст:
<ul>
<li>здесь какой то текст</li>
<li>здесь какой то текст</li>
</ul>
<p>здесь какой то текстздесь какой то текстздесь какой то текст
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст</p>
<p>здесь какой то текстздесь какой то текстздесь какой то текст
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст</p>
Используй специализированные библиотеки для парсинга HTML. Погугли HtmlAgilityPack для C#. Должно помочь.
 

slavyn8213

Client
Регистрация
28.10.2018
Сообщения
261
Благодарностей
60
Баллы
28
Уважаемые знатоки! Помогите, пжлста, с регуляркой, которая будет искать незакрытые теги </p>. Столкнулся с такой напастью, что после парсинга сайта попадаются статьи, где у некоторых предложений отсутствует закрывающий тег </p>. Нужна регулярка которая будет проставлять закрывающие теги, вот пример:


<h2>здесь какой то текст</h2>
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст.
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст:
<ul>
<li>здесь какой то текст</li>
<li>здесь какой то текст</li>
</ul>
<p>здесь какой то текстздесь какой то текстздесь какой то текст
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст</p>
<p>здесь какой то текстздесь какой то текстздесь какой то текст
<p>здесь какой то текстздесь какой то текстздесь какой то текстздесь какой то текст</p>
string text = project.Variables["HTML"].Value;
string pattern = @"(<p[^>]*>)([^<]*)(?!<\/p>)";
string result = System.Text.RegularExpressions.Regex.Replace(text, pattern, "$1$2</p>");
project.Variables["HTML"].Value = result;
 

k0refun

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

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