On-line: PSP, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
администратор




Пост N: 4300
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.12.14 11:52. Заголовок: Вытащить дату


Есть строки вида
№ 00124/00000317 от 18.10.14
бла 18.10.14 бла

как вытащить дату ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 13 [только новые]


постоянный участник


Пост N: 1006
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 06.12.14 11:54. Заголовок: Ну, если сивола "..


Ну, если сивола "." (точка) больше в строке нет, можно по ним ориентироваться.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4301
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.12.14 11:56. Заголовок: да можно и так. а ка..


да можно и так.
а как это сделать с помощью регулярных выражений ? не имел практики с ними.....

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 384
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.12.14 12:17. Заголовок: Dima пишет: а как э..


Dima пишет:

 цитата:
а как это сделать с помощью регулярных выражений ? не имел практики с ними.....



FUNC Test()
LOCAL cString := "Есть строки вида № 00124/00000317 от 18.10.14 бла 18.10.14 бла "
LOCAL cRegExp := "([0-9]{2,}[.][0-9]{2,}[.][0-9]{2,})"
? hb_RegexLike( cRegExp , cString, .F.)
? hb_Regex( cRegExp , cString, .F.)[1]

RETURN NIL


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4302
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.12.14 13:01. Заголовок: Спасибо Игорь ! А в..


Спасибо Игорь !

А вот hb_RegexLike( cRegExp , cString, .F.) возвращает .F. это норм ?

Тут надо вот так
 
if hb_Regexhas( cRegExp , cString)
? hb_Regex( cRegExp , cString, .F.)[1]
endif



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1008
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 06.12.14 13:13. Заголовок: А год - всегда две ц..


А год - всегда две цифры или м.б. четыре?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4303
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.12.14 13:18. Заголовок: PSP пишет: А год - ..


PSP пишет:

 цитата:
А год - всегда две цифры или м.б. четыре?


ну это как юзер введет ;) обычно две.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4304
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.12.14 13:24. Заголовок: ну тогда надо не ? h..


ну тогда надо не ? hb_Regex( cRegExp , cString)[1] // так всю строку вернет
а вот так ? hb_Regex( cRegExp , cString)[2] // так только дату что и надо

Идею понял.
Спасибо

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4305
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.12.14 13:50. Заголовок: окончательный вариан..


окончательный вариант
 
proc main()
LOCAL cString := "Есть строки вида № 00124/00000317 от 11.11.14 "
*LOCAL cRegExp := ".*([0-9]{2}[.]{1}[0-9]{2}[.]{1}[0-9]{2,4}).*"
LOCAL cRegExp :="([0-9]{2}[.]{1}[0-9]{2}[.]{1}[0-9]{2,4})"

*? hb_Regexlike( cRegExp , cString,.f.)
if hb_Regexhas( cRegExp , cString)
? hb_Regex( cRegExp , cString,.f.)[1] // по ходу а нужен ли тут 3 параметр .F. ?
endif

RETURN NIL



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4316
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.12.14 22:54. Заголовок: Dima пишет: {2,4})&..


Dima пишет:

 цитата:
[0-9]{2,4})"


Игорь вопрос.
От 2 до 4 знаков как бы не очень верно , хотя я конечно преобразую результат в CTOD().
И если будет 3 то CTOD() вернет пустую дату.
Я к тому что может поймать и 3 цифры.
Как сделать что бы ловило или 2 цифры или 4 ? Хотя это не принципиально , просто для себя хочу знать.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 388
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.12.14 11:16. Заголовок: Dima пишет: Как сде..


Dima пишет:

 цитата:
Как сделать что бы ловило или 2 цифры или 4 ? Хотя это не принципиально , просто для себя хочу знать.



([0-9][0-9]|[0-9][0-9][0-9][0-9])

Ps. По уму там еще нужно организовать проверку на то что
1. в дате день - первая цифра [01] - вторая [1-9] , первая [3] - вторая [01]
2 месяц первая цифра [0] - вторая [1-9] , первая [1] - вторая [12]


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4318
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.12.14 11:18. Заголовок: скобки точно такие ..


скобки точно такие [] ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 389
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.12.14 11:27. Заголовок: Dima пишет: скобки ..


Dima пишет:

 цитата:
скобки точно такие [] ?


точно - точно, это значит что в этой позиции ОДНА цифра от 0 до 9

кстати погуглить надо "проверка даты регулярное выражение " - уверен есть

погуглил - оч много примеров , мы тут велосипед изобретаем

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4319
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.12.14 11:57. Заголовок: Haz пишет: Ps. По у..


Haz пишет:

 цитата:
Ps. По уму там еще нужно организовать проверку на то что


Да не , по уму не надо ;) Это же не контроль ввода. Я просто читаю данные.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 203
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет