Common Lisp 中的路径名、带有通配符的文件名

May*_*erg 5 filenames clisp wildcard common-lisp pathname

字符*?用作路径名中的通配符。如何引用具有?实际字符之一的文件名?例如: [18]> (wild-pathname-p #p"foo") NIL [19]> (wild-pathname-p #p"foo?") T 那么引用文件名“foo?” 不能这样做。我试图用?反斜杠转义,但这没有用。\u3f我尝试使用or转为 unicode \u003f,但这不起作用。

如何引用名称中包含通配符的文件:如何探测、打开它等?

Xac*_*ach 3

这取决于实现,但对于某些人来说,反斜杠实际上确实有效。但是因为名称字符串是字符串,所以要获取其中包含反斜杠的字符串,您必须使用另一个反斜杠转义反斜杠。因此,例如,"foo?"被转义为"foo\\?", not "foo\?"

上次我检查过,在 CLISP 中,无法引用名称中带有通配符的文件。我的解决方案是避免 CLISP。

  • 您可以引用 Unix 路径名为“foo?”的文件。与 #p"foo\\?" 在SBCL。 (2认同)