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

Nord

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

bitport

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

Nord

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

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
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
Сообщения
278
Благодарностей
97
Баллы
28
  • Спасибо
Реакции: bitport

bitport

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

Mitnik

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

Nord

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

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

Mitnik

Client
Регистрация
22.12.2014
Сообщения
118
Благодарностей
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
Сообщения
247
Благодарностей
58
Баллы
28
может точки не хватает? я не могу сейчас проверить <p>[\w\W]*Нужная[\w\W].*?</p>
 

Grush20

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

slavyn8213

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

Grush20

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

slavyn8213

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

K R

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

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

ALev

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

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
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 448
Благодарностей
9 142
Баллы
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 789
Благодарностей
1 460
Баллы
113

noble

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

n0n3mi1y

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

noble

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

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