2016-05-06 13 views
2

Versuchen, meine ersten Schritte in Lisp zu tun:lernen Klipp Regexp

Ich finde das folgende Verhalten, dass AFAIK ist falsch.

[185]> (if (regexp:match "[:alnum:]" "2" :extended t) t nil) 
NIL 
[186]> (if (regexp:match "[:alnum:0-9]" "2" :extended t) t nil) 
T 

Ich verstehe: alnum: sollte Ziffern enthalten, aber anscheinend tut es nicht!

Was mache ich falsch?

+1

Die Maschine unterstützt wahrscheinlich nicht '[: alnum:]'. Sie könnten stattdessen '[A-Za-z0-9_]' verwenden. '\ w' könnte auch funktionieren (zumindest wenn Sie zu [cl-ppcre] wechseln (http://weitz.de/cl-ppcre/)). – jkiiski

Antwort

7

Die Syntax für Zeichenklassen ist "[: alnum:]", einschließlich die eckigen Klammern. Also, wenn Sie übereinstimmen möchten, müssen Sie es so schreiben: