> 1 <

Автор Сообщение

dank1

Members


Статус

1 сообщений

Где: Russia
Род занятий:
Возраст:

#7574   2015-04-08 22:57 GMT+3 часа(ов)      
Здравствуйте. Совсем замучила проблема такая. Решил познакомиться с scheme (в редакторе GIMP) и вот чем все обернулось. Не хочет работать регулярное выражение если в строке присутствуют русские буквы. Вот функция:

 
(define (get-file-number orig-name)
(let* ((buffer (vector "" "" "")))
(if (re-match "(([0-9])[.][^.]+)" orig-name buffer) ;
(- (char->integer (string-ref (substring orig-name (car (vector-ref buffer 2)) (+ 1 (car (vector-ref buffer 2)))) 0)) 48)
)
)
)
 


Она возвращает последнюю цифру в имени. С английскими работает корректно. А если есть хоть 1 рус. буква то все бред… Все обыскал нигде даже справки нету по этой функции (re-match) пришлось методом тыка выяснять что у неё за параметры. Читал что может помочь модификатор u (пробовал так «(?u)(([0-9])[.][^.]+)») не выходит (видимо не поддерживает модификатор). Думал может скрипт на питоне переделать, но хочется в скиме результат получить. Спасибо за внимание надеюсь найдется знающий человек.

misha

Moderators


Статус

1273 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#7575   2015-04-09 22:40 GMT+3 часа(ов)      
Да просто гимп обычно использует какой-то отстой, вместо нормального интерпретатора схемы. Скорее всего у вас отсутствует поддержка юникода.
Кстати, ваше регулярное выражение довольно странное, вы его сами придумали?
> 1 <


Онлайн :

0 пользователь(ей), 10 гость(ей) :




Реклама на сайте: