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

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
21,106
Reaction score
9,391
Points
113

sps75

Client
Joined
Dec 13, 2020
Messages
74
Reaction score
11
Points
8
добрый день. Как в конструкторе рег выражений поменять \n на \s?
Есть текст, в каждой строке по 1 слову. нужно его привести в читабельный вид...
 

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
21,106
Reaction score
9,391
Points
113
добрый день. Как в конструкторе рег выражений поменять \n на \s?
Есть текст, в каждой строке по 1 слову. нужно его привести в читабельный вид...
Кубик "Данные - Обработка текста" в двух режимах: Regex (1-ый скриншот) и Text (2-ой скриншот).

103420


103421
 

sps75

Client
Joined
Dec 13, 2020
Messages
74
Reaction score
11
Points
8
Спасибо, про стринг спейс прописью я даже не подумал)
 

theinova

Client
Joined
Sep 7, 2016
Messages
122
Reaction score
83
Points
28
редко стал заглядывать в этот топик, chatgpt отлично выдает регулярки :bu:
 
  • Thank you
Reactions: stanar

Leriandredani

Новичок
Joined
Apr 4, 2023
Messages
19
Reaction score
2
Points
3
полезная статья, спасибо автору
 

udder

Client
Joined
Mar 28, 2017
Messages
633
Reaction score
138
Points
43
slovo1-slovo2-slovo3 как заменить здесь последний дефис на точку
строка может быть с тремя и более дефисами, всегда нужно заменять последний дефис. Помогите регуляркой
 

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
113
slovo1-slovo2-slovo3 как заменить здесь последний дефис на точку
строка может быть с тремя и более дефисами, всегда нужно заменять последний дефис. Помогите регуляркой
106119
 
  • Thank you
Reactions: udder

Hannes

Client
Joined
Feb 3, 2016
Messages
534
Reaction score
277
Points
63
Можете, пожалуйста, помочь составить регулярное выражение для этой строки:

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

Deisler

Client
Joined
Oct 26, 2019
Messages
492
Reaction score
195
Points
43
Можете, пожалуйста, помочь составить регулярное выражение для этой строки:

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

Hannes

Client
Joined
Feb 3, 2016
Messages
534
Reaction score
277
Points
63
Обработка текста -> Split Указываете в виде разделителя запятую и в какие переменные должны упасть значения после разделения строки. Нумирация переменных начинается с нуля
Спасибо! Впервые воспользовался этим функционалом)
Очень удобно!
 

Hannes

Client
Joined
Feb 3, 2016
Messages
534
Reaction score
277
Points
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 и под каждый вариант сделал свою регулярку. Если есть решение красивее поделитесь пожалуйста.
 
Last edited:

djaga

Administrator
Staff member
Joined
Apr 26, 2020
Messages
562
Reaction score
1,145
Points
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


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

Attachments

Astraport

Client
Joined
May 1, 2015
Messages
5,008
Reaction score
4,482
Points
113
Подскажите с регулярочкой: удаление всего после последнего любого закрытого тега.
Например какой-то HTML, а "в конце какой текст</div><p>ещё какой-то текст" и нужно "<p>ещё какой-то текст" удалить, но при этом последний закрывающий тэг может быть не только div, но и p или что угодно.
В HtmlAgilityPack есть метод по исправлению незакрытых тегов, но он работает криво и мне нужно обрезать.
 

K R

Client
Joined
Jan 14, 2017
Messages
134
Reaction score
143
Points
43
Подскажите с регулярочкой: удаление всего после последнего любого закрытого тега.
Например какой-то HTML, а "в конце какой текст</div><p>ещё какой-то текст" и нужно "<p>ещё какой-то текст" удалить, но при этом последний закрывающий тэг может быть не только div, но и p или что угодно.
В HtmlAgilityPack есть метод по исправлению незакрытых тегов, но он работает криво и мне нужно обрезать.
Обработка текста - Замена - режим Regex.

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

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

Astraport

Client
Joined
May 1, 2015
Messages
5,008
Reaction score
4,482
Points
113
  • Thank you
Reactions: K R

isaacfks

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

 

isaacfks

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

Задача решена. Больше неактуально!
 
  • Thank you
Reactions: djaga

maestro-72

Новичок
Joined
Aug 9, 2023
Messages
3
Reaction score
1
Points
1
Есть строка вида ТТТ/123456И На конце может быть И а может и не быть. Но только И другой символ не принимается и именно в конце. Не могу правильно решить. Т.е. должно искать либо ТТТ/123456 а если в конце стоит буква то ТТТ/123456И
 

K R

Client
Joined
Jan 14, 2017
Messages
134
Reaction score
143
Points
43
Есть строка вида ТТТ/123456И На конце может быть И а может и не быть. Но только И другой символ не принимается и именно в конце. Не могу правильно решить. Т.е. должно искать либо ТТТ/123456 а если в конце стоит буква то ТТТ/123456И
.+?(\d|И)$
Найдёт все строки, которые заканчиваются на "И" или на цифру.
 

maestro-72

Новичок
Joined
Aug 9, 2023
Messages
3
Reaction score
1
Points
1
.+?(\d|И)$
Найдёт все строки, которые заканчиваются на "И" или на цифру.
Не хочет искать. (не находит) Проверял в NPP.
 

K R

Client
Joined
Jan 14, 2017
Messages
134
Reaction score
143
Points
43
Не хочет искать. (не находит) Проверял в NPP.
У меня работает. Режим поиска указан правильно?

110292
 

maestro-72

Новичок
Joined
Aug 9, 2023
Messages
3
Reaction score
1
Points
1
Все я
У меня работает. Режим поиска указан правильно?

View attachment 110292
понял свою ошибку... У меня строка не заканчивается на этом. После разложения на подстроки, все работает. Спасибо большое!
 
  • Thank you
Reactions: K R

baracuda

Client
Joined
Jun 19, 2013
Messages
856
Reaction score
295
Points
63
Всем привет...
Есть большой документ html ну очень много букв в нем есть конструкции spintax {..|..|..} словосочетания(слова) разные по количеству. от 2 до ...
есть яваскрипты, есть варианты { }.
Задача собрать все эти конструкции spintax в список.


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

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

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

K R

Client
Joined
Jan 14, 2017
Messages
134
Reaction score
143
Points
43
Всем привет...
Есть большой документ html ну очень много букв в нем есть конструкции spintax {..|..|..} словосочетания(слова) разные по количеству. от 2 до ...
есть яваскрипты, есть варианты { }.
Задача собрать все эти конструкции spintax в список.


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

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

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

bitport

Client
Joined
Oct 15, 2016
Messages
117
Reaction score
14
Points
18
Товарищи помогите решить проблему. Есть список, нужно получить цену.

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

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


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

K R

Client
Joined
Jan 14, 2017
Messages
134
Reaction score
143
Points
43
Товарищи помогите решить проблему. Есть список, нужно получить цену.

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

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


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

bitport

Client
Joined
Oct 15, 2016
Messages
117
Reaction score
14
Points
18
Если перед ценой всегда стоит закрывающая скобка, то можно ее добавить в выражение.
(?<=\)\ -\ ).*?(?=\ ₽)
В том то и дело, может быть скобка, точка или буква
 

nexx1

Client
Joined
Aug 16, 2016
Messages
284
Reaction score
101
Points
43
Товарищи помогите решить проблему. Есть список, нужно получить цену.
(\d+) ₽$
 

bitport

Client
Joined
Oct 15, 2016
Messages
117
Reaction score
14
Points
18

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)