Регулярные выражения Script FU - Lisp
Формулировка задачи:
Здравствуйте. Совсем замучила проблема такая. Решил познакомиться с scheme (в редакторе GIMP) и вот чем все обернулось. Не хочет работать регулярное выражение если в строке присутствуют русские буквы. Вот функция:
Она возвращает последнюю цифру в имени. С английскими работает корректно. А если есть хоть 1 рус. буква то все бред… Все обыскал нигде даже справки нету по этой функции (re-match) пришлось методом тыка выяснять что у неё за параметры. Читал что может помочь модификатор u (пробовал так «(?u)(([0-9])[.][^.]+)») не выходит (видимо не поддерживает модификатор). Думал может скрипт на питоне переделать, но хочется в скиме результат получить. Спасибо за внимание надеюсь найдется знающий человек.
(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) ) ) )
Решение задачи: «Регулярные выражения Script FU»
textual
Листинг программы
>>> re.findall(r"(([0-9])[.][^.]+)$", "D:\Users\Poma\Desktop\книга\tiff\book.page003.tiff") [('3.tiff', '3')] >>>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д