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

Товарищи помогите решить проблему. Есть список, нужно получить цену.

(?<=-\ ).*?(?=\ ₽\ ) Этой регуляркой получаю, но если в строке ещё одна цифра, то результат такой "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
Подскажите, пожалуйста, как составить регулярку, которая будет определять с заглавной ли буквы (кириллица) написано первое слово фразы или со строчной?
Задача - отсортировать в таблице строки, в которых в определенном столбце прописаны фразы, у которых и нужно определить - заглавная первая буква или строчная.
 
^[А-Я] - с заглавной

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

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

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

ltvvUse.png


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

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

<p>
Первая строка
Вторая строка
Ненужная строка
</p>
 
Последнее редактирование:
может точки не хватает? я не могу сейчас проверить <p>[\w\W]*Нужная[\w\W].*?</p>
 
GPT
  • <p>: Соответствует открывающему тегу <p>.
  • ([^<]*\bнужная\b[^<]*): Сопоставляет текст, содержащий слово "нужная" внутри тегов <p>, исключая другие теги.
  • <\/p>: Соответствует закрывающему тегу </p>.
 
  • Спасибо
Реакции: Grush20
Спасибо, так пашет! А не подскажите как называются эти галочки в скобочках? Как найти про них почитать подробнее?
Символ ^ в квадратных скобках ставится перед тем символом, которого не должно быть в искомом фрагменте текста.
Выражение [^<]* означает, что после <p> могут быть любые символы кроме <. То есть будут взяты все символы до <.
Соответственно регулярное выражение не выйдет за рамки одного абзаца.

Информации по регуляркам много. Вот, например, на хабре.
 
  • Спасибо
Реакции: seodamage и Grush20
Ребят, требуется регулярное выражение для EmEditor. Оно у меня будет сложным, но мне хотя бы важно разобраться с его принципом. И так, требуется найти все слова целиком вне зависимости от регистра "аа" и заменить их на "аб", при этом сохранив регистр заменяемого слова. То есть, исходное слово может быть: аа, АА, Аа, аА.
Для "Найти", вот хотя бы есть рабочие вариант:
\b[Аа][Аа]\b
\b([Аа])([Аа])\b
А заменить каким выражением?
Для приведённого примера, результат работы выражения должен преобразовать в: аб, АБ, Аб, аБ.
 
Ребят, требуется регулярное выражение для 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. В моем примере английские буквы
 
Уважаемые форумчане. Есть регулярка, которая парсила с канала урл, картинку, описание и короткую ссылку, затем складывала все в таблицу; но в определенный момент она перестала работать, прошу помощи!

Канал в телеграмме 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">)

Подскажите пожалуйста, где в ней ошибка почему перестала работать?
 
Уважаемые форумчане. Есть регулярка, которая парсила с канала урл, картинку, описание и короткую ссылку, затем складывала все в таблицу; но в определенный момент она перестала работать, прошу помощи!

Канал в телеграмме 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 поменялся.

Может кто-то подтянется, подскажет.
У меня пока нет возможности проверить, к сожалению.
 
Дорый.
Поскажите как мне уделить все после первого пробела?
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
 
  • Спасибо
Реакции: noble
Код:
Развернуть Свернуть Копировать
\S+(?=\s)
Оправка - после первого знаска |
Т.к. тесты показали, что если попадется числовое значение записанное таким боразом - 2 579,00 грн то в переменную сохраняется только двойка.
Спс за помощь
 
Оправка - после первого знаска |
Т.к. тесты показали, что если попадется числовое значение записанное таким боразом - 2 579,00 грн то в переменную сохраняется только двойка.
Спс за помощь
Попробуйте не регуляркой, а методом Split. Как мне кажется, в этой ситуации он более подходящий)
 
  • Спасибо
Реакции: noble
спс не знал про Split, пригодиться в других проекта.
Нужная регулярка выглядит так: ^(.*?)грн|.*$
Я вообще до сегодня не знал чтоесть язык регулярных выроже т.к. мне это не нужо было))))
 
Уважаемые знатоки! Помогите, пжлста, с регуляркой, которая будет искать незакрытые теги </p>. Столкнулся с такой напастью, что после парсинга сайта попадаются статьи, где у некоторых предложений отсутствует закрывающий тег </p>. Нужна регулярка которая будет проставлять закрывающие теги, вот пример:


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


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

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