|
Подскажите по регулярным выражениям | ☑ | ||
---|---|---|---|---|
0
twise
18.09.13
✎
16:00
|
Всем, привет.
Нужна помощь по регулярным выражениям. В строке поиска может содержаться 2 даты или одна дата. Если их содержится две, то одна имеет формат "дд.мм.гггг", а другая "дд.мм.гггг чч:мм:сс". Если одна, то она формата "дд.мм.гггг". Задача следующая. Если есть дата со временем, то выбираем ее, а если нет, то тогда ту, что есть. Написал строку: \d{2}[./]\d{2}[./]\d{4}\s\d{2}:\d{2}:\d{2}|\d{2}.\d{2}.\d{4} В принципе, работает корректно, но в случае строки с двумя датами Execute возвращает 2 записи, а нужна одна с вышеуказанным приоритетом. |
|||
1
pumbaEO
18.09.13
✎
16:02
|
x|y - находит x или y...
|
|||
2
twise
18.09.13
✎
16:03
|
(1) а как только одно значение выбрать?
|
|||
3
twise
18.09.13
✎
16:04
|
я и использую "|"
|
|||
4
pumbaEO
18.09.13
✎
16:05
|
значит бери всегда первое не ошибешся.
|
|||
5
twise
18.09.13
✎
16:06
|
(4) так как раз наоборот, у меня та, что без времени, всегда первым идет. А вот вторая дата (со временем) она либо идет после, либо ее там нет.
|
|||
6
twise
18.09.13
✎
16:06
|
Только постобработкой результата решить?
|
|||
7
pumbaEO
18.09.13
✎
16:08
|
не верю что у тебя идет одной строкой "22.12.201322.12.2013 13:15:10" , может для времени проверять еще и пробел?
|
|||
8
Fragster
модератор
18.09.13
✎
16:10
|
((?=\d{2}.\d{2}.\d{4}\s)\d{2}[./]\d{2}[./]\d{4}\s\d{2}:\d{2}:\d{2})|(\d{2}.\d{2}.\d{4})
|
|||
9
Fragster
модератор
18.09.13
✎
16:10
|
но все равно два результата, ибо "или"
|
|||
10
twise
18.09.13
✎
16:12
|
(7) вот строка для примера. Это загрузка из интернет-банка.
10.09.2013 - 3 039,00 RUR Сформирован при обработке транзакции (регистрационный номер документа 56582214 по карте 520339XXXXXX9434). Дата совершения операции 07/09/2013 18:53:11. Тип операции Эмиссия. Оплата товаров/услуг. Сумма операции/валюта операции 3039.00/RUR. Первая дата (10.09.2013) - это дата, когда операция была подтверждена банком, а внутри описания транзакции есть реальная дата (07/09/2013 18:53:11). |
|||
11
twise
18.09.13
✎
16:12
|
Хочется брать именно реальную
|
|||
12
twise
18.09.13
✎
16:12
|
Но ее там может не быть
|
|||
13
twise
18.09.13
✎
16:13
|
(8) да, те же яйца, только в профиль (((
|
|||
14
pumbaEO
18.09.13
✎
16:13
|
первую дату сначала 1 пробел и потом ищем дату.
|
|||
15
twise
18.09.13
✎
16:16
|
(14) не очень понял
|
|||
16
twise
18.09.13
✎
16:21
|
(14) \s\d{2}[./]\d{2}[./]\d{4}\s\d{2}:\d{2}:\d{2}|\d{2}.\d{2}.\d{4}
Так что ли? Все равно же 2 возвращает и не в таком порядке, каком мне надо ( |
|||
17
Fragster
модератор
18.09.13
✎
16:23
|
если (?=\d{2}.\d{2}.\d{4}.*)\d{2}/\d{2}/\d{4}\s\d{2}:\d{2}:\d{2}|\d{2}.\d{2}.\d{4} возвращает два результата - бери второй, если один - бери первый
|
|||
18
twise
18.09.13
✎
16:24
|
(17) ну это я догадался. Но это уже постобработка регулярки. Так можно конечно, но хотелось бы решить самой регуляркой.
|
|||
19
twise
18.09.13
✎
16:38
|
Ок, а как тогда получить строку такого вида:
10.09.201307/09/2013 18:53:11 ? |
|||
20
twise
18.09.13
✎
16:50
|
Смирился и решил проблему постобработкой. Всем спасибо за участие.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |