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

deskuznetsov

Client
Регистрация
29.08.2019
Сообщения
531
Благодарностей
365
Баллы
63
Подскажите, а как быть, если надо находить 6 значный код из письма, но частенько меняется разметка письма.
И в итоге, делаю регулярку она в одном случае работает, а с другим таким письмом может уже не работать.

Например может быть так

C#:
                  <span style="padding:5px 0;font-size: 20px;font-weight: bolder;color:#e9b434;">
                  180209
                  </span>
А может быть так

C#:
<span style="padding:5px 0;font-size: 20px;font-weight: bolder;color:#e9b434;">180209</span>
Или даже так

C#:
>180209
                  </span>
И так

C#:
                  <span style="padding:5px 0;font-size: 20px;font-weight: bolder;color:#e9b434;">
                  180209<
Я в итоге составил под известные варианты регулярки и по очереди их прогоняю, но не пойму как сделать универсальную, чтобы во всех вариантах работала и главное работала, если будет какой-то новый вариант.

Я так понимаю нужно выставлять в регулярку значения ИЛИ? Кто понимает в этом помогите плз

Примеры моих регулярок

(?<=>).*\d{6}(?=</span)

(?<=>)[0-9]{6}(?=</span)

\s[0-9]{6}\s.*?(?=</span>)


Если просто задать, чтобы искал цифры 6 знаков, то находит около 15 таких кодов.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 564
Благодарностей
9 179
Баллы
113
Подскажите, а как быть, если надо находить 6 значный код из письма, но частенько меняется разметка письма.
Попробуйте через очистку html-тегов.
Это должен быть универсальный способ, который будет работать на всех представленных вами вариантах исх. кода.

Кубик "Обработка текста - Замена (Regex) на пустоту", по регулярке:
C#:
<.*?>
Далее кубик "Обработка текста - Regex", с регуляркой:
C#:
\d+
62917
 
Последнее редактирование:
  • Спасибо
Реакции: deskuznetsov

dizney

Client
Регистрация
25.01.2014
Сообщения
51
Благодарностей
52
Баллы
18
Подскажите, а как быть, если надо находить 6 значный код из письма, но частенько меняется разметка письма.
И в итоге, делаю регулярку она в одном случае работает, а с другим таким письмом может уже не работать.

Например может быть так

C#:
                  <span style="padding:5px 0;font-size: 20px;font-weight: bolder;color:#e9b434;">
                  180209
                  </span>
А может быть так

C#:
<span style="padding:5px 0;font-size: 20px;font-weight: bolder;color:#e9b434;">180209</span>
Или даже так

C#:
>180209
                  </span>
И так

C#:
                  <span style="padding:5px 0;font-size: 20px;font-weight: bolder;color:#e9b434;">
                  180209<
Я в итоге составил под известные варианты регулярки и по очереди их прогоняю, но не пойму как сделать универсальную, чтобы во всех вариантах работала и главное работала, если будет какой-то новый вариант.

Я так понимаю нужно выставлять в регулярку значения ИЛИ? Кто понимает в этом помогите плз

Примеры моих регулярок

(?<=>).*\d{6}(?=</span)

(?<=>)[0-9]{6}(?=</span)

\s[0-9]{6}\s.*?(?=</span>)


Если просто задать, чтобы искал цифры 6 знаков, то находит около 15 таких кодов.
Универсальная регулярка, одним запросом:
Код:
(?<=>(|\s+))\d+(?=(|\s+)<)
62922
 
  • Спасибо
Реакции: Sergodjan и deskuznetsov

deskuznetsov

Client
Регистрация
29.08.2019
Сообщения
531
Благодарностей
365
Баллы
63
@sergodjan66 @dizney спасибо, оба варианта работают с известными вариантами разметки

UPD:
Если вдруг кому надо, то чуть доработал вариант. чтобы искало только 6 значные коды.

Код:
(?<=>(|\s+))\d{6}(?=(|\s+)<)
 
Последнее редактирование:
  • Спасибо
Реакции: 606 и Sergodjan

Tvister

Client
Регистрация
09.09.2010
Сообщения
257
Благодарностей
34
Баллы
28
C#:
(?<=review-title)[\w\W]*?(?=karma-line)
На странице несколько блоков которые начинаются на review-title заканчиваются на karma-line. Регулярка берет только первый блок. Как переделать чтобы брала все?

Страница https://otzovik.com/reviews/sprite_gazirovanniy_napitok/?order=date_desc

 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 564
Благодарностей
9 179
Баллы
113
C#:
(?<=review-title)[\w\W]*?(?=karma-line)
На странице несколько блоков которые начинаются на review-title заканчиваются на karma-line. Регулярка берет только первый блок. Как переделать чтобы брала все?

Страница https://otzovik.com/reviews/sprite_gazirovanniy_napitok/?order=date_desc

Раздвиньте окно конструктора регулярок вниз, в колонке № появятся номера совпадений.
У меня находит 19 блоков - от 0 до 18.
 

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
del
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 564
Благодарностей
9 179
Баллы
113
  • Спасибо
Реакции: Wide

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
  • Спасибо
Реакции: Sergodjan

baracuda

Client
Регистрация
19.06.2013
Сообщения
802
Благодарностей
284
Баллы
63
Всем привет. Подскажите как выдёргивать значения при одинаковых разделителях. Возможно одной регуляркой ?
Login:password:data:tel:image:bla:bla:bla:bla:bla

К примеру нужна "data"

и вторая.
есть к примеру
12 34 56 78 90 09 09 009 хочу убрать все пробелы что бы вышло так 12345678900909009

Заранее спасибо
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 564
Благодарностей
9 179
Баллы
113
Всем привет. Подскажите как выдёргивать значения при одинаковых разделителях. Возможно одной регуляркой ?
Login:password:data:tel:image:bla:bla:bla:bla:bla

К примеру нужна "data"
Кубик "Обработка текста - Split":
64228


и вторая.
есть к примеру
12 34 56 78 90 09 09 009 хочу убрать все пробелы что бы вышло так 12345678900909009
Кубик "Обработка текста - Замена (Regex)":

64229
 
Последнее редактирование:
  • Спасибо
Реакции: baracuda

Slam37

Новичок
Регистрация
06.09.2020
Сообщения
24
Благодарностей
2
Баллы
3
Ребят помогите
Есть такая регулярка Которое отсеивает значения
C#:
 (?<="funds":\{).*(?=funds_incl)
Как сделать одним кодом так чтобы мне в этом отсеянном значении он мне еще искал еще все мне нужные значения
C#:
"(\w+)"
Грубо говоря как делать запрос в запросе.
 

Kazza

Client
Регистрация
17.09.2015
Сообщения
78
Благодарностей
5
Баллы
8
Помогите, в регулярках очень слаб.
В переменной есть текст типа "на 50.25% дешевле".
Как достать только числа с точкой ?
 

Nord

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

Kazza

Client
Регистрация
17.09.2015
Сообщения
78
Благодарностей
5
Баллы
8
Ещё помощи прошу)
Код
"publicationDate":"2020-10-06T11:08:56+06:00","isDomAvailable"="false"

Нужно вытащить только: 2020-10-06


Регулярка моя (?<="publicationDate":").*(?=","isDomAvailable")

Как обрезать первые 10 символов сразу?
 
Последнее редактирование:

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
  • Спасибо
Реакции: Kazza

Kazza

Client
Регистрация
17.09.2015
Сообщения
78
Благодарностей
5
Баллы
8
Если это текст из которого нужно вытащить только дату.
вот
Код:
2[0-9]{3}\-[0-9]{2}\-[0-9]{2}
о чем вы?
2020-10-06 нужно тольку дату вытащить из "publicationDate":"2020-10-06T11:08:56+06:00","isDomAvailable"="false"
 

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
  • Спасибо
Реакции: Kazza

Kazza

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 564
Благодарностей
9 179
Баллы
113
  • Спасибо
Реакции: Kazza и inilim

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43

fayruzi4

Client
Регистрация
01.02.2016
Сообщения
164
Благодарностей
29
Баллы
28
Собираем народный список регулярок (regex) на все случаи жизни, начну первым. У кого есть свои - закидывайте, добавлю в первый пост указав автора. Регулярки бывает могут работать не правильно, если что отписывайтесь в этой теме - найдём решение.

Поиск строк НЕ содержащих указанную (под)строку:
Код:
(?<=(^|\r\n))((?!(test)).)*(?=($|\r\n))
на входе:
test
tester
gogogo
ololo

на выходе:


Поделился: CSS
gogogo
ololo
[TBODY] [/TBODY]
Не работает регулярка, помоги поправить плз
 

loogle

Client
Регистрация
08.12.2013
Сообщения
294
Благодарностей
115
Баллы
43

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 564
Благодарностей
9 179
Баллы
113
Последнее редактирование:

fayruzi4

Client
Регистрация
01.02.2016
Сообщения
164
Благодарностей
29
Баллы
28
Да, работает, проблема в том, что в ZP 7.2.0 в экшене Очистить кеш/куки - для чего я собственно и просил регулярку - не работает опция "для доменов удовлетворяющих регулярному выражению" - что туда не указывай, удаляются абсолютно весь кэш и куки. Это бага, просто я пока её не описывал на форуме, мне бы для начала поправили багу с ломающимися куками и как следствие с разлогиниванием из всех аккаунтов
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 564
Благодарностей
9 179
Баллы
113
Да, работает, проблема в том, что в ZP 7.2.0 в экшене Очистить кеш/куки - для чего я собственно и просил регулярку - не работает опция "для доменов удовлетворяющих регулярному выражению" - что туда не указывай, удаляются абсолютно весь кэш и куки. Это бага, просто я пока её не описывал на форуме, мне бы для начала поправили багу с ломающимися куками и как следствие с разлогиниванием из всех аккаунтов
В таком виде не работает?
(вместо test можно указать например регулярку test\.com если нужно удалить куки для домена test.com)

66210


Проверил сейчас в версии 7.2.1.0, вроде корректно работает удаление по такому принципу.
 

fayruzi4

Client
Регистрация
01.02.2016
Сообщения
164
Благодарностей
29
Баллы
28
В таком виде не работает?
(вместо test можно указать например регулярку test\.com если нужно удалить куки для домена test.com)

Посмотреть вложение 66210

Проверил сейчас в версии 7.2.1.0, вроде корректно работает удаление по такому принципу.
В основном тестировал очистку именно кэша и в 7.2.0 - не работает просто с указанием домена (даже без зоны), например "nytimes"
 

loogle

Client
Регистрация
08.12.2013
Сообщения
294
Благодарностей
115
Баллы
43
Ну что никто не знает как? (4 сообщения выше) Или подскажите код на C#.
Объясню для чего делаю: мне стали попадаться сайты, где не пропускают gmail, если в логине есть более 2 точек или +, но зато отлично пропускают, если стоят по одной.
 

porileenvej

Client
Регистрация
09.05.2020
Сообщения
99
Благодарностей
131
Баллы
33
Здравствуйте!
Ничего не нашел на форуме, но как удалить все строки, содержащие более одной точки?
Например на входе текст:

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Нужно оставить первые 3, т.е. не нужно чтобы в test было более 2 точек.
Код:
.*?\..*?\..*?\..*
Вот что останется
 
  • Спасибо
Реакции: loogle

loogle

Client
Регистрация
08.12.2013
Сообщения
294
Благодарностей
115
Баллы
43

Вложения

Последнее редактирование:

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