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

Коллеги, подскажите, как расставить пробелы до и после имён.

13JOHN45
345ALBERT234
4312WANESSA1
5MIKE22
 
Коллеги, подскажите, как расставить пробелы до и после имён.

13JOHN45
345ALBERT234
4312WANESSA1
5MIKE22
Попробуйте двухпроходную замену.
Приложил пример шаблона.

84171
 

Вложения

  • Спасибо
Реакции: udder и Netson
Помогите плз регулярку на размеры составить. 80x29.3x22.6 см/мм разделитель может быть точка или запятая или не быть вовсе, см/мм может быть с точкой а также слитно. x признак должен быть обязательно, иначе это размер. Регистр см/мм может быть разным.
80x29.3x22.6 см.
80x29.3x22.6 см
80x29.3x22.6см.
80x29.3x22.6см
80x29,3x22,6 см.
80x29,3x22,6 см
80x29,3x22,6см.
80x29,3x22,6см
80x293x226 см.
80x293x226 см
80x293x226см.
80x293x226см
80x29.3x22.6 мм.
80x29.3x22.6 мм
80x29.3x22.6мм.
80x29.3x22.6мм
80x29,3x22,6 мм.
80x29,3x22,6 мм
80x29,3x22,6мм.
80x29,3x22,6мм
80x293x226 мм.
80x293x226 мм
80x293x226мм.
80x293x226мм
 
Помогите плз регулярку на размеры составить. 80x29.3x22.6 см/мм разделитель может быть точка или запятая или не быть вовсе, см/мм может быть с точкой а также слитно. x признак должен быть обязательно, иначе это размер. Регистр см/мм может быть разным.
80x29.3x22.6 см.
80x29.3x22.6 см
80x29.3x22.6см.
80x29.3x22.6см
80x29,3x22,6 см.
80x29,3x22,6 см
80x29,3x22,6см.
80x29,3x22,6см
80x293x226 см.
80x293x226 см
80x293x226см.
80x293x226см
80x29.3x22.6 мм.
80x29.3x22.6 мм
80x29.3x22.6мм.
80x29.3x22.6мм
80x29,3x22,6 мм.
80x29,3x22,6 мм
80x29,3x22,6мм.
80x29,3x22,6мм
80x293x226 мм.
80x293x226 мм
80x293x226мм.
80x293x226мм

Можете попробовать такой вариант регулярки: \d+(,|\.|)(\d+|)x\d+(,|\.|)(\d+|)x\d+(,|\.|)(\d+|)(\s+|)(см|мм)(\.|)

85269
 
  • Спасибо
Реакции: Wide
Посмотреть вложение 85707

Как удалить все, кроме указанных?
Через отрицающее рег-выражение https://zennolab.com/discussion/threads/ochistit-kesh-krome-nesk-domenov.97717/#post-652674

Если не получится первым вариантом, то попробуйте решать эту задачу через экспорт/импорт кук по регулярному выражению. То есть, делаете экспорт по обычной регулярке с перебором вариантов (domain1.com)|(domain2.com), затем чистите все куки и делаете импорт. В этом случае отрицающая регулярка не потребуется.
 
как обработать переменную, в которой содержатся цифры с новой строки
1
2
3
4
Чтобы ПОСЛЕ КАЖДОЙ СТРОКИ добавить нужный текст?
ПЕРЕД цифрой я делаю так
88451

и вот как после цифры дописать нужный текст я не знаю
 
как обработать переменную, в которой содержатся цифры с новой строки
1
2
3
4
Чтобы ПОСЛЕ КАЖДОЙ СТРОКИ добавить нужный текст?
ПЕРЕД цифрой я делаю так
Посмотреть вложение 88451
и вот как после цифры дописать нужный текст я не знаю
Точно также, просто добавлять после $1.
 
  • Спасибо
Реакции: udder
Может пригодиться кому-нибудь,я тут отчайся, траф упал до 20к, и короче рекламу снял, подрядился за 1к сутки, автосервис охранять, с 8 до восьми, но и короче ноут с собой приношу, сожусь в бутке и до утра читаю, и вот читал там, даже если 50 страниц прочитать, уже можно много узнать, сейчас пм купил, отдельно, буду там руку набивать, до лета)
 

Вложения

Есть замечательная регулярка, которая очищает текст от более одного пробела [\s]{2,} замена на одиночный пробел
88537


Интересует как из текста удалить более одной точки идущей подряд и так же с запятыми сделать?
В чате зеннолаба телеграм @Gunjubasik дал интересный вариант
Хорошо отшлифовал свой текст :) Я доволен.
C#:
Развернуть Свернуть Копировать
project.Variables["Result"].Value = Macros.TextProcessing.Replace(project.Variables["Text"].Value.Trim(), @"[\W]{2,}", ". ", "Regex", "All");

project.Variables["Result"].Value = project.Variables["Result"].Value.Trim();
 
Последнее редактирование:
  • Спасибо
Реакции: baracuda
Код:
Развернуть Свернуть Копировать
// Удалить после «:»

echo preg_replace("/^(.+?):.+$/", '\\1', $text);

// Удалить после «-»

echo preg_replace("/^(.+?)-.+$/", '\\1', $text);

[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\.A-Za-z0-9]{2,} - найдет все email;

(\d{1,3}\.){3}\d{1,3}:\d{1,5} - получить айпи и порт;

(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])? – получит урлы сайтов.

ICQ:

([1-9])+(?:-?\d){4,}

Набор из букв и цифр (латиница):

^[a-zA-Z0-9]+$

Набор из букв и цифр (латиница + кириллица):

^[а-яА-ЯёЁa-zA-Z0-9]+$

Домен (например abcd.com):

^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$

IPv4: (подкорректировано runcore)

((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)

IPv6:

((^|:-)([0-9a-fA-F]{0,4})){1,8}$

Имя пользователя (с ограничением 2-20 символов, которыми могут быть буквы и цифры, первый символ обязательно буква):

^[a-zA-Z][a-zA-Z0-9-_\.]{1,20}$

Пароль (Строчные и прописные латинские буквы, цифры):

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$

Пароль (Строчные и прописные латинские буквы, цифры, спецсимволы. Минимум 8 символов):

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

Дата в формате YYYY-MM-DD:

[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])

UPD. Более строгая проверка, предложенная runcore:

(19|20)\d\d-((0[1-9]|1[012])-(0[1-9]|[12]\d)|(0[13-9]|1[012])-30|(0[13578]|1[02])-31)

Дата в формате DD/MM/YYYY:

(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d

Целые числа и числа с плавающей точкой (разделитель точка):

\-?\d+(\.\d{0,})?

UUID:

^[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}$

Широта или долгота:

-?\d{1,3}\.\d+
 
Последнее редактирование модератором:
  • Спасибо
Реакции: udder
Подскажите как десятитысячные числа сделать через пробел.
Например в переменной num число 90800, нужно привести к виду 90 800?
 
Здравствуйте. Помогите пожалуйста разобраться с регулярками.
Я пытаюсь составить две регулярки для субтитров. Первая должна выдергивать таймкод начала предложения, а вторая конец предложения. Замечу, что именно предложение, не строку.
Вот первая, вроде она работает, может у вас будут по ней корректировки.
(?<=\W).*(?=\ --> \d+:\d+:\d+,\d+\s+\b[A-Z].*?\b)
А вторая регулярка для окончания предложения.
(?<=\ -->\ ).*(?=\D+\.|\$)
И вот она странно работает, к примеру в самом первом предложении не выделяется конечный таймкод.
Пример субтитров над которыми тестировал регулярки.

Код:
Развернуть Свернуть Копировать
1
00:00:07,200 --> 00:00:10,880
Hi, I'm Paula Sánchez-Ferrero
and I'm a 3D artist for video games.

2
00:00:12,640 --> 00:00:16,800
Throughout my career,
I've done more than nine AAA projects,

3
00:00:16,800 --> 00:00:18,360
including "Metro Exodus,"

4
00:00:18,360 --> 00:00:21,720
"Call of Duty: WWII"
and "Overkill's The Walking Dead."

5
00:00:21,720 --> 00:00:25,920
I work as Supervising Environment
and Prop Artist at elite3D,

6
00:00:25,920 --> 00:00:27,960
a video game outsourcing company.

7
00:00:29,400 --> 00:00:32,720
From a young age, video games
were very present in my life,

8
00:00:32,720 --> 00:00:35,880
I really enjoyed drawing
and writing my own stories.

9
00:00:35,880 --> 00:00:38,240
I'm passionate about
all the hidden stories

10
00:00:38,240 --> 00:00:40,560
behind the textures
of the props and assets,

11
00:00:40,560 --> 00:00:44,560
the objects used to decorate
the game's scenes or world.

12
00:00:44,560 --> 00:00:47,720
Everything has a story,
even if it's an inanimate object.

13
00:00:48,800 --> 00:00:51,280
In this course,
you'll find out

14
00:00:51,280 --> 00:00:54,280
what creating props and other video game
objects consists of.

15
00:00:54,280 --> 00:00:57,560
Plus, how to make them
professional quality.

16
00:00:58,160 --> 00:01:00,080
As a project, we'll model a prop

17
00:01:00,080 --> 00:01:02,280
that could be in any video game.

18
00:01:03,000 --> 00:01:05,920
To do this, I'll share
sources of inspiration with you

19
00:01:05,920 --> 00:01:07,920
that marked the beginning of my career.

20
00:01:07,920 --> 00:01:10,880
After, we'll learn the phases
or the pipeline to follow

21
00:01:10,880 --> 00:01:12,720
for developing our asset.

22
00:01:12,720 --> 00:01:16,320
We'll find out how to configure
our software and scripts

23
00:01:16,320 --> 00:01:18,040
to save time working.

24
00:01:18,040 --> 00:01:21,000
We'll also look at
the importance of having good references

25
00:01:21,000 --> 00:01:22,600
before we start modeling.

26
00:01:23,040 --> 00:01:25,840
With this knowledge, we'll get typing

27
00:01:25,840 --> 00:01:27,800
to start modeling our asset.

28
00:01:28,600 --> 00:01:32,160
First we'll do the block out
to figure out the prop's dimensions

29
00:01:32,160 --> 00:01:35,080
and get an idea of the pieces
that we'll need

30
00:01:35,080 --> 00:01:37,040
to estimate how long this will take us.

31
00:01:37,040 --> 00:01:40,440
Then, the high poly phase,
first with the Sub-D elements,

32
00:01:40,440 --> 00:01:43,600
with containment and support loops
in the more complex pieces.

33
00:01:43,600 --> 00:01:47,200
Later, with Zbrush, we'll look at
how to weld high poly pieces

34
00:01:47,200 --> 00:01:51,040
and finally, we'll give our asset
details with floaters and screws.

35
00:01:51,680 --> 00:01:55,440
Then, the low phase
to reduce the poly of our high poly

36
00:01:55,440 --> 00:01:59,600
followed by UV mapping
and bakes to project detail.

37
00:01:59,960 --> 00:02:03,040
We'll work with the substance painter
to texturize,

38
00:02:03,040 --> 00:02:06,720
we'll create our base materials
to give them history and realism.

39
00:02:07,480 --> 00:02:09,400
With our finished asset,

40
00:02:09,400 --> 00:02:12,920
we'll see the steps to integrate it
into our game motor.

41
00:02:12,920 --> 00:02:15,520
Lastly, we'll illuminate
our asset in Marmoset

42
00:02:15,520 --> 00:02:19,840
and we'll retouch it in Photoshop
before posting it on social media.

43
00:02:19,840 --> 00:02:22,120
After the course,
you'll have a complete model

44
00:02:22,120 --> 00:02:24,840
with realistic textures
to use in video games.

45
00:02:26,320 --> 00:02:29,440
For this course,
you should have a basic knowledge

46
00:02:29,440 --> 00:02:32,040
of hard surface or poly modeling.

47
00:02:32,040 --> 00:02:36,040
Plus, familiarity with
3ds Max would be very helpful,

48
00:02:36,040 --> 00:02:39,840
however, if you know a different one,
you can follow the course's content.

49
00:02:40,240 --> 00:02:43,600
You'll need a computer with 3ds Max
or similar for modeling

50
00:02:43,600 --> 00:02:47,120
and Photoshop CS6 or higher
for final retouches on the object.

51
00:02:48,000 --> 00:02:49,320
Create assets from scratch

52
00:02:49,320 --> 00:02:52,160
and do modeling projects
on a professional level.
 
Подскажите как десятитысячные числа сделать через пробел.
Например в переменной num число 90800, нужно привести к виду 90 800?
Переформатировать последовательность можно с помощью такого снипета C#:
C#:
Развернуть Свернуть Копировать
var number = Convert.ToInt32(project.Variables["in"].Value);
string fmt = "00 000";
return number.ToString(fmt);

88961
 
есть регулярка [^\\]+$ которая оставляет все что после последнего слеша
ПРИМЕР
g:\мой диск\backup\Zenno\file.sql
Регулярка оставит только file.sql, а как переделать, чтобы оставляло все что перед последним слешем:
ВОТ ТАК g:\мой диск\backup\Zenno\
РЕШЕНИЕ

РАЗ

.*\\

ДВА

^(.*[\\\/])

ТРИ C#
return Path.GetDirectoryName(project.Variables["folder"].Value);

Помогли в чате ZennoLab
 
Последнее редактирование:
  • Спасибо
Реакции: Sergodjan
Подскажите, нашёл такой пример:
Извлечение имени и расширения файла из пути
(?<=\\)[^\.\\]*(\.[^\.]+){1,}$

А мне нужно, чтобы имя файла извлекалось без его расширения! Расширение моего файла .tar.gz

У меня разделитель это точка, что делать? С точками не хочет работать. Я пытаюсь таким образом имя файла извлечь в переменную, но действие не происходит

89595


У меня разделитель это точка, что делать? С точками не хочет работать. Я пытаюсь таким образом имя файла извлечь в переменную, но действие не происходит

1647468391229.png
ВСЁ, тут я просто не указал номера
 
А мне нужно, чтобы имя файла извлекалось без его расширения! Расширение моего файла .tar.gz
Еще можете попробовать работать с такой регуляркой: .*?(?=\.) через кубик Обработка текста - Regex (первое совпадение).

89598
 
  • Спасибо
Реакции: Biobalans
Еще можете попробовать работать с такой регуляркой: .*?(?=\.) через кубик Обработка текста - Regex (первое совпадение).

Посмотреть вложение 89598
Спасибо. А можно универсальную регулярку, которая будет извлекать только имя файла, где бы он ни находился? Найденый пример регулярки позволяет извлечь его только вместе с расширением из пути D:\BGram\1\free\10.198.tar.gz , а приведённый Вами - обрабатывает уже полученный результат.
Файл 10.198.tar.gz может находиться в любой поддиректории "D:\BGram\", и мне его имя "10.198" нужно извлекать всегда, где бы он ни был. И желательно "10" и 198 в разные переменные.
 
Спасибо. А можно универсальную регулярку, которая будет извлекать только имя файла, где бы он ни находился? Найденый пример регулярки позволяет извлечь его только вместе с расширением из пути D:\BGram\1\free\10.198.tar.gz , а приведённый Вами - обрабатывает уже полученный результат.
Файл 10.198.tar.gz может находиться в любой поддиректории "D:\BGram\", и мне его имя "10.198" нужно извлекать всегда, где бы он ни был. И желательно "10" и 198 в разные переменные.

Например, из полного пути вот такой можно извлечь: ([^\\]+(?=\.tar.gz))

89603


Впрочем, она работает как раз и как универсальная:

89604


А результат 10.198 уже через Split можно разложить по переменным или тоже через регулярку, но за два шага.
Первый шаг: .*?(?=\.), второй шаг (?<=\.).*
 
Последнее редактирование:
  • Спасибо
Реакции: Biobalans
Здравствуйте! Помогите, пожалуйста, составить регулярку.

Нужно в url заменить двойной слеш "//" на один не затрагивая при этом "https://"

Т.е в ссылке
C#:
Развернуть Свернуть Копировать
https://www.site.com/123//
нужно сделать так:
C#:
Развернуть Свернуть Копировать
https://www.site.com/123/

На кубиках придумал как это сделать, но излишне сложно получается(
 
Здравствуйте! Помогите, пожалуйста, составить регулярку.

Нужно в url заменить двойной слеш "//" на один не затрагивая при этом "https://"

Т.е в ссылке
C#:
Развернуть Свернуть Копировать
https://www.site.com/123//
нужно сделать так:
C#:
Развернуть Свернуть Копировать
https://www.site.com/123/

На кубиках придумал как это сделать, но излишне сложно получается(
Если двойной слеш только в конце, то так можно:

90121
 
  • Спасибо
Реакции: Hannes
Спасибо, но в данном случае не подходит.
Мне нужно удалить лишний слеш только если он есть, способ выше повредит "https://"

Есть такой способ:
  1. заменить // на пустоту
  2. заменить https: на https://

Но надеялся одной регуляркой решить.
 
Последнее редактирование:
  • Спасибо
Реакции: Sergodjan
Здравствуйте, подскажите пожалуйста как составить регулярку?

Формат:

check>text>sample>1
check>text>sample>2
check>text>example>1
check>text>sample>3
check>text>test>4

Нужно найти все элементы содержащие одинаковую информацию между вторым и третьим ">" (в данном случае слово sample), и удалить все строки кроме одной.

Чтобы осталось например:

check>text>sample>2
check>text>example>1
check>text>test>4
 
Здравствуйте, подскажите пожалуйста как составить регулярку?

Формат:

check>text>sample>1
check>text>sample>2
check>text>example>1
check>text>sample>3
check>text>test>4

Нужно найти все элементы содержащие одинаковую информацию между вторым и третьим ">" (в данном случае слово sample), и удалить все строки кроме одной.

Чтобы осталось например:

check>text>sample>2
check>text>example>1
check>text>test>4
В конструкторе составь. Только вместо числа вручную пропиши /d+ и проверь
 
Здравствуйте, подскажите пожалуйста как составить регулярку?

Формат:

check>text>sample>1
check>text>sample>2
check>text>example>1
check>text>sample>3
check>text>test>4

Нужно найти все элементы содержащие одинаковую информацию между вторым и третьим ">" (в данном случае слово sample), и удалить все строки кроме одной.

Чтобы осталось например:

check>text>sample>2
check>text>example>1
check>text>test>4

Приложил пример шаблона, как вариант.
Примененный в нем метод решения правда не на регулярках основан.
Результат его работы такой:

90172
 

Вложения

Переменная с текстом
Нужно удалить все после первого переноса, оставить только первую строку с пятеркой. Как сделать?
 
Переменная с текстом

Нужно удалить все после первого переноса, оставить только первую строку с пятеркой. Как сделать?
"Обработка текста - Regex" по регулярке .+ (взять первое (нулевое) совпадение).

90827
 
  • Спасибо
Реакции: udder
Подскажите пожалуйста, как немного доработать регулярку.
На странице есть список адресов вида example@mail\.com и вот такие со звездочкой example1@mail\.com\n \* .
Беру DOM, из него начинаю выбирать мыла регуляркой
\b[a-zA-Z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}\b
при этом мыла парсятся в виде example@mail.com, example1@mail.com и тд. Как изменить регулярку, чтобы она на выходе отдавала почты с этой звездочкой \n \*, если она есть у мыла?
 

Вложения

  • DOM.txt
    DOM.txt
    149,8 KB · Просмотры: 219

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