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

Подскажите, а как быть, если надо находить 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 таких кодов.
 
Подскажите, а как быть, если надо находить 6 значный код из письма, но частенько меняется разметка письма.

Попробуйте через очистку html-тегов.
Это должен быть универсальный способ, который будет работать на всех представленных вами вариантах исх. кода.

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

62917
 
Последнее редактирование:
  • Спасибо
Реакции: deskuznetsov
Подскажите, а как быть, если надо находить 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
@sergodjan66 @dizney спасибо, оба варианта работают с известными вариантами разметки

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

Код:
Развернуть Свернуть Копировать
(?<=>(|\s+))\d{6}(?=(|\s+)<)
 
Последнее редактирование:
  • Спасибо
Реакции: 606 и Sergodjan
C#:
Развернуть Свернуть Копировать
(?<=review-title)[\w\W]*?(?=karma-line)

На странице несколько блоков которые начинаются на review-title заканчиваются на karma-line. Регулярка берет только первый блок. Как переделать чтобы брала все?

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

1A53vg6ibDYX0m.jpg
 
C#:
Развернуть Свернуть Копировать
(?<=review-title)[\w\W]*?(?=karma-line)

На странице несколько блоков которые начинаются на review-title заканчиваются на karma-line. Регулярка берет только первый блок. Как переделать чтобы брала все?

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

1A53vg6ibDYX0m.jpg
Раздвиньте окно конструктора регулярок вниз, в колонке № появятся номера совпадений.
У меня находит 19 блоков - от 0 до 18.
 
del
 
Последнее редактирование:
  • Спасибо
Реакции: Wide
Всем привет. Подскажите как выдёргивать значения при одинаковых разделителях. Возможно одной регуляркой ?
Login:password:data:tel:image:bla:bla:bla:bla:bla

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

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

Заранее спасибо
 
Всем привет. Подскажите как выдёргивать значения при одинаковых разделителях. Возможно одной регуляркой ?
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
Ребят помогите
Есть такая регулярка Которое отсеивает значения
C#:
Развернуть Свернуть Копировать
 (?<="funds":\{).*(?=funds_incl)
Как сделать одним кодом так чтобы мне в этом отсеянном значении он мне еще искал еще все мне нужные значения
C#:
Развернуть Свернуть Копировать
"(\w+)"

Грубо говоря как делать запрос в запросе.
 
Помогите, в регулярках очень слаб.
В переменной есть текст типа "на 50.25% дешевле".
Как достать только числа с точкой ?
 
Ещё помощи прошу)
Код
"publicationDate":"2020-10-06T11:08:56+06:00","isDomAvailable"="false"

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


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

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

о чем вы?

2020-10-06 нужно тольку дату вытащить из "publicationDate":"2020-10-06T11:08:56+06:00","isDomAvailable"="false"
 
  • Спасибо
Реакции: Kazza и inilim
Собираем народный список регулярок (regex) на все случаи жизни, начну первым. У кого есть свои - закидывайте, добавлю в первый пост указав автора. Регулярки бывает могут работать не правильно, если что отписывайтесь в этой теме - найдём решение.

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

на выходе:


Поделился: CSS
gogogo
ololo
[TBODY] [/TBODY]

Не работает регулярка, помоги поправить плз
 
Последнее редактирование:
Да, работает, проблема в том, что в ZP 7.2.0 в экшене Очистить кеш/куки - для чего я собственно и просил регулярку - не работает опция "для доменов удовлетворяющих регулярному выражению" - что туда не указывай, удаляются абсолютно весь кэш и куки. Это бага, просто я пока её не описывал на форуме, мне бы для начала поправили багу с ломающимися куками и как следствие с разлогиниванием из всех аккаунтов
 
Да, работает, проблема в том, что в ZP 7.2.0 в экшене Очистить кеш/куки - для чего я собственно и просил регулярку - не работает опция "для доменов удовлетворяющих регулярному выражению" - что туда не указывай, удаляются абсолютно весь кэш и куки. Это бага, просто я пока её не описывал на форуме, мне бы для начала поправили багу с ломающимися куками и как следствие с разлогиниванием из всех аккаунтов
В таком виде не работает?
(вместо test можно указать например регулярку test\.com если нужно удалить куки для домена test.com)

66210


Проверил сейчас в версии 7.2.1.0, вроде корректно работает удаление по такому принципу.
 
В таком виде не работает?
(вместо test можно указать например регулярку test\.com если нужно удалить куки для домена test.com)

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

Проверил сейчас в версии 7.2.1.0, вроде корректно работает удаление по такому принципу.
В основном тестировал очистку именно кэша и в 7.2.0 - не работает просто с указанием домена (даже без зоны), например "nytimes"
 
Ну что никто не знает как? (4 сообщения выше) Или подскажите код на C#.
Объясню для чего делаю: мне стали попадаться сайты, где не пропускают gmail, если в логине есть более 2 точек или +, но зато отлично пропускают, если стоят по одной.
 
Здравствуйте!
Ничего не нашел на форуме, но как удалить все строки, содержащие более одной точки?
Например на входе текст:

t.est@gmail.com
te.st@gmail.com
tes.t@gmail.com
t.e.st@gmail.com
t.e.s.t@gmail.com
t.e.s.t.@gmail.com

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

Вложения

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

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