CL-PPCRE Unicode Свойство

Я пытаюсь найти решение этого простого кода Perl с помощью библиотеки CL-PPCRE:

if (/\p{Space}/){
  print "This string has some spaces\n";
}

Я новичок в CL-PPCRE и попробовал:

   (scan "\\p{\\#Space}" "The String has some white spaces")

; Я получил сообщение о том, что свойство #/Space не существует.

Как я могу выполнить эквивалент?

2 ответа

Perl регулярное выражение /\p{Space}/ соответствует больше, чем просто "". cf \ p {} документы

Один из подходов состоит в том, чтобы просто использовать \s выражение:

(cl-ppcre:scan "\\s" (format nil "hi~Cthere" #\return))

Чтобы использовать весь класс Unicode Space:

(ql:quickload :cl-unicode)
(cl-ppcre:scan "\\p{Space}" (format nil "hi~Cthere" #\return))

См. Свойства Unicode в документах CL-PPCRE.

cl-ppcre Библиотека не требует от вас (по крайней мере, места) использовать какую-либо специальную константу.

(if (cl-ppcre:scan " " "alle meine entchen")
    (FORMAT T "Does have spaces~%")
    (FORMAT T "Does not have spaces~%"))
> Does have spaces

(if (cl-ppcre:scan " " "allemeineentchen")
    (FORMAT T "Does have spaces~%")
    (FORMAT T "Does not have spaces~%"))
> Does not have spaces

сделает свое дело.

Другие вопросы по тегам