Автор | Сообщение |
|
| |
Пост N: 4300
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.12.14 11:52. Заголовок: Вытащить дату
Есть строки вида № 00124/00000317 от 18.10.14 бла 18.10.14 бла как вытащить дату ?
|
|
|
Ответов - 13
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1006
Зарегистрирован: 27.01.07
|
|
Отправлено: 06.12.14 11:54. Заголовок: Ну, если сивола "..
Ну, если сивола "." (точка) больше в строке нет, можно по ним ориентироваться.
|
|
|
|
| |
Пост N: 4301
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.12.14 11:56. Заголовок: да можно и так. а ка..
да можно и так. а как это сделать с помощью регулярных выражений ? не имел практики с ними.....
|
|
|
|
| |
Пост 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
|
|
|
|
| |
Пост 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
|
|
|
|
| постоянный участник
|
Пост N: 1008
Зарегистрирован: 27.01.07
|
|
Отправлено: 06.12.14 13:13. Заголовок: А год - всегда две ц..
А год - всегда две цифры или м.б. четыре?
|
|
|
|
| |
Пост N: 4303
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.12.14 13:18. Заголовок: PSP пишет: А год - ..
PSP пишет: цитата: | А год - всегда две цифры или м.б. четыре? |
| ну это как юзер введет ;) обычно две.
|
|
|
|
| |
Пост N: 4304
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.12.14 13:24. Заголовок: ну тогда надо не ? h..
ну тогда надо не ? hb_Regex( cRegExp , cString)[1] // так всю строку вернет а вот так ? hb_Regex( cRegExp , cString)[2] // так только дату что и надо Идею понял. Спасибо
|
|
|
|
| |
Пост 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
|
|
|
|
| |
Пост N: 4316
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.12.14 22:54. Заголовок: Dima пишет: {2,4})&..
Dima пишет: Игорь вопрос. От 2 до 4 знаков как бы не очень верно , хотя я конечно преобразую результат в CTOD(). И если будет 3 то CTOD() вернет пустую дату. Я к тому что может поймать и 3 цифры. Как сделать что бы ловило или 2 цифры или 4 ? Хотя это не принципиально , просто для себя хочу знать.
|
|
|
|
| |
Пост 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]
|
|
|
|
| |
Пост N: 4318
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.12.14 11:18. Заголовок: скобки точно такие ..
скобки точно такие [] ?
|
|
|
|
|
| |
Пост N: 389
Зарегистрирован: 20.02.11
|
|
Отправлено: 08.12.14 11:27. Заголовок: Dima пишет: скобки ..
Dima пишет: точно - точно, это значит что в этой позиции ОДНА цифра от 0 до 9 кстати погуглить надо "проверка даты регулярное выражение " - уверен есть погуглил - оч много примеров , мы тут велосипед изобретаем
|
|
|
|
| |
Пост N: 4319
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.12.14 11:57. Заголовок: Haz пишет: Ps. По у..
Haz пишет: цитата: | Ps. По уму там еще нужно организовать проверку на то что |
| Да не , по уму не надо ;) Это же не контроль ввода. Я просто читаю данные.
|
|
|
|