Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2015, 20:40   #1
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию Составление регулярки

Добрый день!
Помогите составить регулярку чтобы проверять вот такие строки:

Код:
Текст Текст|0|0|Текст2 Текст2|No
Текст Текст|0|0|Текст2 Текст2|D:\doc\papka
Текст Текст|0|0|Текст2 Текст2|https://site.ru
Тоесть В начале строки любой текст любые символы что угодно через | только чифры через следующие | тоже только цифры, потом опять любой текст и в конце Либо слово No, либо путь, либо ссылка.
nibufep вне форума Ответить с цитированием
Старый 19.12.2015, 20:51   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Если такой лог получается автоматом, то, ИМХО, можно не бояться, что пути/ссылки будут некорректны.

Навскидку:
Код:
^(.+)(\|\d+){2}\|(.+)\|(No|\w:\\.+|https?://.+)$

Не проверял.
Вадим Мошев вне форума Ответить с цитированием
Старый 19.12.2015, 21:14   #3
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Если такой лог получается автоматом, то, ИМХО, можно не бояться, что пути/ссылки будут некорректны.

Навскидку:
Код:
^(.+)(\|\d+){2}\|(.+)\|(No|\w:\\.+|https?://.+)$

Не проверял.
Спасибо работает, но пропускает вот такие строки: Текст|Текст|1|1|Текст2|No

т.е. в первом столбце есть | уже получается не корректная строка...
nibufep вне форума Ответить с цитированием
Старый 19.12.2015, 21:21   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Странно. У меня работает. Вот скринкаст, так сказать:

https://youtu.be/GwDj8bgzJAQ

Последний раз редактировалось Вадим Мошев; 19.12.2015 в 21:25.
Вадим Мошев вне форума Ответить с цитированием
Старый 19.12.2015, 21:27   #5
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Странно. У меня работает. Вот скринкаст, так сказать:

https://youtu.be/GwDj8bgzJAQ
Ну у вас тоже пропускает
Это правильно:
Текст Текст|0|0|Текст2 Текст2|No
Текст Текст|0|0|Текст2 Текст2|D:\doc\papka
Текст Текст|0|0|Текст2 Текст2|https://site.ru

Это нет:
Текст|Текст|1|1|Текст2|No

Последний раз редактировалось nibufep; 19.12.2015 в 21:38.
nibufep вне форума Ответить с цитированием
Старый 19.12.2015, 21:59   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Попробуйте такой вариант
Код:
^([а-яё\s\w]+)(\|\d+){2}\|([а-яё\s\w]+)\|(No|\w:\\.+|https?://.+)$
Вашу красную строку он не пропускает. Честно сам говоря, не знаю, почему он вроде как работает (даже кушает русские имена в путях)

Хотел ещё такой вариант:
Код:
^([а-яё\s\w]+)(\|\d+){2}\|([а-яё\s\w]+)\|(No|\w:\\[а-яё\s\w]+|https?://[а-яё\s\w]+)$
Но он вообще ничего не находил

Такой тоже:
Код:
^([^\|])(\|\d+){2}\|([^\|])\|(No|\w:\\.+|https?://.+)$
Вадим Мошев вне форума Ответить с цитированием
Старый 19.12.2015, 22:39   #7
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Попробуйте такой вариант
Код:
^([а-яё\s\w]+)(\|\d+){2}\|([а-яё\s\w]+)\|(No|\w:\\.+|https?://.+)$
Вашу красную строку он не пропускает. Честно сам говоря, не знаю, почему он вроде как работает (даже кушает русские имена в путях)
так вообще все пропускает...
nibufep вне форума Ответить с цитированием
Старый 19.12.2015, 22:53   #8
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Странно. У меня красную строку не пропускает (это анимированная гиф):


А попробуйте это:
Код:
^([\w\s]+)(\|\d+){2}\|([\w\s]+)\|(No|\w:\\.+|https?://.+)$

Последний раз редактировалось Вадим Мошев; 19.12.2015 в 22:57.
Вадим Мошев вне форума Ответить с цитированием
Старый 19.12.2015, 23:28   #9
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Странно. У меня красную строку не пропускает (это анимированная гиф):


А попробуйте это:
Код:
^([\w\s]+)(\|\d+){2}\|([\w\s]+)\|(No|\w:\\.+|https?://.+)$
тоже самое...
nibufep вне форума Ответить с цитированием
Старый 20.12.2015, 00:02   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Ещё вариант:
Код:
^(\w|\s)+(\|\d+){2}\|(\w|\s)+\|(No|\w:\\.+|https?://.+)$
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составление регулярки bilibian Общие вопросы Delphi 3 10.10.2014 23:36
3 регулярки Abuhamed PHP 2 28.11.2012 13:51
регулярки WennY PHP 2 26.12.2011 16:20
Регулярки timewriter SQL, базы данных 5 16.12.2011 21:32
Регулярки rubbi PHP 3 18.07.2011 14:50