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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 276
Благодарностей
9 057
Баллы
113

sps75

Client
Регистрация
13.12.2020
Сообщения
70
Благодарностей
8
Баллы
8
добрый день. Как в конструкторе рег выражений поменять \n на \s?
Есть текст, в каждой строке по 1 слову. нужно его привести в читабельный вид...
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 276
Благодарностей
9 057
Баллы
113
добрый день. Как в конструкторе рег выражений поменять \n на \s?
Есть текст, в каждой строке по 1 слову. нужно его привести в читабельный вид...
Кубик "Данные - Обработка текста" в двух режимах: Regex (1-ый скриншот) и Text (2-ой скриншот).

103420


103421
 
  • Спасибо
Реакции: AleXPrischepA и sps75

sps75

Client
Регистрация
13.12.2020
Сообщения
70
Благодарностей
8
Баллы
8
Спасибо, про стринг спейс прописью я даже не подумал)
 

theinova

Client
Регистрация
07.09.2016
Сообщения
118
Благодарностей
79
Баллы
28
редко стал заглядывать в этот топик, chatgpt отлично выдает регулярки :bu:
 
  • Спасибо
Реакции: stanar

Leriandredani

Новичок
Регистрация
04.04.2023
Сообщения
19
Благодарностей
2
Баллы
3
полезная статья, спасибо автору
 

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
slovo1-slovo2-slovo3 как заменить здесь последний дефис на точку
строка может быть с тремя и более дефисами, всегда нужно заменять последний дефис. Помогите регуляркой
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113
slovo1-slovo2-slovo3 как заменить здесь последний дефис на точку
строка может быть с тремя и более дефисами, всегда нужно заменять последний дефис. Помогите регуляркой
106119
 
  • Спасибо
Реакции: udder

Hannes

Client
Регистрация
03.02.2016
Сообщения
525
Благодарностей
272
Баллы
63
Можете, пожалуйста, помочь составить регулярное выражение для этой строки:

C#:
Район, 3 ком., 108 кв.м., 7/22 этаж
Нужно получить отдельно
  1. район
  2. количество комнат
  3. метраж
  4. этажность
Реально это одной регулярной сделать? ChatGPT попробовал - не понимает задачу.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Можете, пожалуйста, помочь составить регулярное выражение для этой строки:

C#:
Район, 3 ком., 108 кв.м., 7/22 этаж
Нужно получить отдельно
  1. район
  2. количество комнат
  3. метраж
  4. этажность
Реально это одной регулярной сделать? ChatGPT попробовал - не понимает задачу.
Обработка текста -> Split Указываете в виде разделителя запятую и в какие переменные должны упасть значения после разделения строки. Нумирация переменных начинается с нуля
 
  • Спасибо
Реакции: Hannes и ex3maL

Hannes

Client
Регистрация
03.02.2016
Сообщения
525
Благодарностей
272
Баллы
63
Обработка текста -> Split Указываете в виде разделителя запятую и в какие переменные должны упасть значения после разделения строки. Нумирация переменных начинается с нуля
Спасибо! Впервые воспользовался этим функционалом)
Очень удобно!
 

Hannes

Client
Регистрация
03.02.2016
Сообщения
525
Благодарностей
272
Баллы
63
Помогите, пожалуйста, составить регулярное выражение! :bc:

Нужно получить:
200 ratings
Based on: 130 ratings

Осложняется всё тем, что в одном случае эти данные находятся в title, а в другом - в text. Не понимаю, как надёжно можно их получать. :(

C#:
{"header":{"header_type":"rating","header_payload":{"rating":"4.7","title":"200 ratings","subtitle":"reviews"}}}
{"header":{"header_type":"info","header_payload":{"title":"Rating: 4.8","text":"Based on: 130 ratings"}}}

update:
Сделал так:
Чекаю header_type и под каждый вариант сделал свою регулярку. Если есть решение красивее поделитесь пожалуйста.
 
Последнее редактирование:

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
545
Благодарностей
1 124
Баллы
93
Помогите, пожалуйста, составить регулярное выражение! :bc:

Нужно получить:
200 ratings
Based on: 130 ratings

Осложняется всё тем, что в одном случае эти данные находятся в title, а в другом - в text. Не понимаю, как надёжно можно их получать. :(

C#:
{"header":{"header_type":"rating","header_payload":{"rating":"4.7","title":"200 ratings","subtitle":"reviews"}}}
{"header":{"header_type":"info","header_payload":{"title":"Rating: 4.8","text":"Based on: 130 ratings"}}}

update:
Сделал так:
Чекаю header_type и под каждый вариант сделал свою регулярку. Если есть решение красивее поделитесь, пожалуйста.
Привет. Все же такое лучше получать с помощью JSON, а не регулярного выражения... Но задачка интересная)
Надеюсь, "спасибо" точно заслужил.))

Регулярное выражение: (?<="title":")[^"]+(?=")(?![^{]*"text")|(?<="text":")[^"]+(?=")

Полное решение:
Получить значение из JSON с помощью регулярного выражения:
var testList = new List<string>() // данные из примера
{
    "{\"header\":{\"header_type\":\"rating\",\"header_payload\":{\"rating\":\"4.7\",\"title\":\"200 ratings\",\"subtitle\":\"reviews\"}}}",
    "{\"header\":{\"header_type\":\"info\",\"header_payload\":{\"title\":\"Rating: 4.8\",\"text\":\"Based on: 130 ratings\"}}}",
};

string pattern = @"(?<=""title"":"")[^""]+(?="")(?![^{]*""text"")|(?<=""text"":"")[^""]+(?="")";

foreach (var match in testList.Select(s => Regex.Match(s, pattern))
             .Where(match => match.Success))
    project.SendInfoToLog($"Нашел: {match.Value}");
Результат:
106670


Приложил ↓ шаблон.
 

Вложения

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 432
Баллы
113
Подскажите с регулярочкой: удаление всего после последнего любого закрытого тега.
Например какой-то HTML, а "в конце какой текст</div><p>ещё какой-то текст" и нужно "<p>ещё какой-то текст" удалить, но при этом последний закрывающий тэг может быть не только div, но и p или что угодно.
В HtmlAgilityPack есть метод по исправлению незакрытых тегов, но он работает криво и мне нужно обрезать.
 

K R

Client
Регистрация
14.01.2017
Сообщения
121
Благодарностей
120
Баллы
43
Подскажите с регулярочкой: удаление всего после последнего любого закрытого тега.
Например какой-то HTML, а "в конце какой текст</div><p>ещё какой-то текст" и нужно "<p>ещё какой-то текст" удалить, но при этом последний закрывающий тэг может быть не только div, но и p или что угодно.
В HtmlAgilityPack есть метод по исправлению незакрытых тегов, но он работает криво и мне нужно обрезать.
Обработка текста - Замена - режим Regex.

Что искать: (</[^>]+?>)((?!</)[\s\S])*(?!\r\n|\r|\n)$
На что заменить: $1

Работает для однострочного и многострочного текста. Протестировал на нескольких html-кодах, всё ок. Если будет отрабатывать криво - напишите.
 
  • Спасибо
Реакции: Hannes, Nord и Astraport

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 432
Баллы
113
  • Спасибо
Реакции: K R

isaacfks

Пользователь
Регистрация
29.05.2023
Сообщения
90
Благодарностей
11
Баллы
8
Привет, прошу помощи с регуляркой.
У меня автоматизированный шаблон регистрации и каждый раз в нём меняется Email. Он хранится в переменной. Чтобы подтвердить код на странице я использую экшен "Принять почту". В нём у меня уже есть регулярное выражение которое ищет код в самом письме, но есть одно но. Задача:
Нужно сначала сделать проверку письма. Если Email принимателя письма (2 скрин) идентичен тому, что находится у меня в переменной в шаблоне, то происходит выполнение регулярного выражения (1 скрин) и берётся код из письма. Можно сделать по другому, но чтобы суть не менялась.

 

isaacfks

Пользователь
Регистрация
29.05.2023
Сообщения
90
Благодарностей
11
Баллы
8
Привет, прошу помощи с регуляркой.
У меня автоматизированный шаблон регистрации и каждый раз в нём меняется Email. Он хранится в переменной. Чтобы подтвердить код на странице я использую экшен "Принять почту". В нём у меня уже есть регулярное выражение которое ищет код в самом письме, но есть одно но. Задача:
Нужно сначала сделать проверку письма. Если Email принимателя письма (2 скрин) идентичен тому, что находится у меня в переменной в шаблоне, то происходит выполнение регулярного выражения (1 скрин) и берётся код из письма. Можно сделать по другому, но чтобы суть не менялась.

Задача решена. Больше неактуально!
 
  • Спасибо
Реакции: djaga

maestro-72

Новичок
Регистрация
09.08.2023
Сообщения
3
Благодарностей
1
Баллы
1
Есть строка вида ТТТ/123456И На конце может быть И а может и не быть. Но только И другой символ не принимается и именно в конце. Не могу правильно решить. Т.е. должно искать либо ТТТ/123456 а если в конце стоит буква то ТТТ/123456И
 

K R

Client
Регистрация
14.01.2017
Сообщения
121
Благодарностей
120
Баллы
43
Есть строка вида ТТТ/123456И На конце может быть И а может и не быть. Но только И другой символ не принимается и именно в конце. Не могу правильно решить. Т.е. должно искать либо ТТТ/123456 а если в конце стоит буква то ТТТ/123456И
.+?(\d|И)$
Найдёт все строки, которые заканчиваются на "И" или на цифру.
 

maestro-72

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

K R

Client
Регистрация
14.01.2017
Сообщения
121
Благодарностей
120
Баллы
43

maestro-72

Новичок
Регистрация
09.08.2023
Сообщения
3
Благодарностей
1
Баллы
1
  • Спасибо
Реакции: K R

baracuda

Client
Регистрация
19.06.2013
Сообщения
792
Благодарностей
277
Баллы
63
Всем привет...
Есть большой документ html ну очень много букв в нем есть конструкции spintax {..|..|..} словосочетания(слова) разные по количеству. от 2 до ...
есть яваскрипты, есть варианты { }.
Задача собрать все эти конструкции spintax в список.


Границы { }
Вижу что явный и обязательный признак это | внутри конструкции
пробел один быть не может
символ ; тоже быть не может в конструкции [^;]
Слова и словосочетания только кириллица. думаю что то типа [0-9а-яА-Я ]

Возможно у яваскритов ещё есть какие то признаки которые стоит исключить.

Просьба помочь составить регулярку c условиями.
 

K R

Client
Регистрация
14.01.2017
Сообщения
121
Благодарностей
120
Баллы
43
Всем привет...
Есть большой документ html ну очень много букв в нем есть конструкции spintax {..|..|..} словосочетания(слова) разные по количеству. от 2 до ...
есть яваскрипты, есть варианты { }.
Задача собрать все эти конструкции spintax в список.


Границы { }
Вижу что явный и обязательный признак это | внутри конструкции
пробел один быть не может
символ ; тоже быть не может в конструкции [^;]
Слова и словосочетания только кириллица. думаю что то типа [0-9а-яА-Я ]

Возможно у яваскритов ещё есть какие то признаки которые стоит исключить.

Просьба помочь составить регулярку c условиями.
Как-то вот так, может быть:
\{([^\}\|]+?\|){1,}[^\}\|]+?\}
 
  • Спасибо
Реакции: baracuda

bitport

Client
Регистрация
15.10.2016
Сообщения
118
Благодарностей
14
Баллы
18
Товарищи помогите решить проблему. Есть список, нужно получить цену.

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

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


Космос (KS картон) - 50 ₽
Родоппи ( KS картон) - 50 ₽
Opal (KS слюда) - 50 ₽
Ту - 134 (KS слюда) - 50 ₽
 

K R

Client
Регистрация
14.01.2017
Сообщения
121
Благодарностей
120
Баллы
43
Товарищи помогите решить проблему. Есть список, нужно получить цену.

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

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


Космос (KS картон) - 50 ₽
Родоппи ( KS картон) - 50 ₽
Opal (KS слюда) - 50 ₽
Ту - 134 (KS слюда) - 50 ₽
Если перед ценой всегда стоит закрывающая скобка, то можно ее добавить в выражение.
(?<=\)\ -\ ).*?(?=\ ₽)
 

bitport

Client
Регистрация
15.10.2016
Сообщения
118
Благодарностей
14
Баллы
18
Если перед ценой всегда стоит закрывающая скобка, то можно ее добавить в выражение.
(?<=\)\ -\ ).*?(?=\ ₽)
В том то и дело, может быть скобка, точка или буква
 

nexx1

Client
Регистрация
16.08.2016
Сообщения
277
Благодарностей
97
Баллы
28

bitport

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

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