Regex 在Parenscript中使用正则表达式

Regex 在Parenscript中使用正则表达式,regex,lisp,common-lisp,parenscript,Regex,Lisp,Common Lisp,Parenscript,我正在试用Parenscript。在尝试使用regex函数时,我得到了意外的输出。例如,以下示例显示: 然而,在我的repl中,我得到一个错误,即函数(parenscript:regex..)未定义 The function parenscript:regex is undefined. [Condition of type undefined-function] Restarts: 0: [continue] Retry using regex. 1: [use-value] Us

我正在试用Parenscript。在尝试使用regex函数时,我得到了意外的输出。例如,以下示例显示:

然而,在我的repl中,我得到一个错误,即函数(parenscript:regex..)未定义

The function parenscript:regex is undefined.
   [Condition of type undefined-function]

Restarts:
 0: [continue] Retry using regex.
 1: [use-value] Use specified function
 2: [retry] Retry SLIME REPL evaluation request.
 3: [*abort] Return to SLIME's top level.
 4: [abort] abort thread (#<thread "repl-thread" running {1002319B63}>)

Backtrace:
  0: (sb-impl::retry-%coerce-name-to-fun regex nil)
  1: (sb-int:simple-eval-in-lexenv (regex "foobar") #<NULL-LEXENV>)
  2: (eval (regex "foobar"))
 --more--
函数parenscript:regex未定义。
[类型未定义函数的条件]
重新启动:
0:[继续]使用正则表达式重试。
1:[使用值]使用指定的函数
2:[重试]重试SLIME REPL评估请求。
3:[*中止]返回SLIME的顶层。
4:[中止]中止线程(#)
回溯:
0:(sb impl::重试-%n将名称强制为fun regex nil)
1:(sb int:lexev中的简单求值(regex“foobar”)#
2:(eval(regex“foobar”))
--更多--
我尝试将名称空间更改为cl user、ps等,但没有任何效果。OTOH,只是为了检查,我试着使用函数sin、random等,这很有效。我的意思是,在repl中键入(sin0.1)可以产生预期的输出


任何帮助都会大有帮助。

在SBCL读取评估打印循环中:

CL-USER> (in-package "PS")
#<PACKAGE "PARENSCRIPT">

PS> (ps (regex "foobar"))
"/foobar/;"

PS> (in-package "CL-USER")
#<package "COMMON-LISP-USER">

cl-user> (ps:ps (ps:regex "foobar"))
"/foobar/;"
CL-USER>(在“PS”包中)
#
PS>(PS(regex“foobar”))
“/foobar/;”
PS>(包装“CL-USER”中)
#
cl用户>(ps:ps(ps:regex“foobar”))
“/foobar/;”

PS:PS
是作为宏运算符的Parenscript编译器

在SBCL读取评估打印循环中:

CL-USER> (in-package "PS")
#<PACKAGE "PARENSCRIPT">

PS> (ps (regex "foobar"))
"/foobar/;"

PS> (in-package "CL-USER")
#<package "COMMON-LISP-USER">

cl-user> (ps:ps (ps:regex "foobar"))
"/foobar/;"
CL-USER>(在“PS”包中)
#
PS>(PS(regex“foobar”))
“/foobar/;”
PS>(包装“CL-USER”中)
#
cl用户>(ps:ps(ps:regex“foobar”))
“/foobar/;”

PS:PS
是作为宏运算符的Parenscript编译器

非常感谢你。我在第二个括号中缺少ps:regex。我还有一个问题要问。如果我在PS>中执行(随机30),它会导致一个低于30的随机整数。但是(ps:ps(ps:random 30))生成javascript代码,而不是随机数。有没有办法理解潜在的一致性/主题?我将尝试在html表单中使用它进行表单验证。再次感谢你。我想我的评论很复杂。试图简化。在PS>中(随机30)->小于30的整数。(regex“foobar”)抛出错误。(ps(regex“foobar”)->“/foobar/;”在cl用户>(ps:ps(ps:regex“foobar”))->“/foobar/;”。(ps:ps(ps:random 30))->javascript代码,不是30以下的整数。有没有一种方法可以理解预期的结果?函数sine像随机函数一样工作。仅在PS>中给出数值结果,在cl user>中给出js代码。正弦的行为就像随机的。regex的表现似乎有所不同。此外,您能否通过示例类似地说明如何使用带有cl interpol的regex?在执行(ql:quickload:cl interpol)并进入PS>之后,我执行了(PS(regex#?r/([^\s]+)foobar/I)),它抛出了一个错误。没有为#\定义分派函数?先谢谢你。抱歉,我问了你这么多问题。你知道什么是Parenscript,PS:PS是做什么的吗?根据我的理解(如果我遗漏了什么,请纠正我):Parenscript将类似CL的语句(一个子集,以及一些浏览器命令(如窗口、文档等)转换为javascript。从“PS”包内部,我们可以使用普通的PS,从外部(如果我们没有导入/使用它),我们需要PS:PS。所以我的困惑是,为什么在PS>名称空间(随机30)和(sin 0.1)中计算值,而(regex…)不是。(ps(regex…),(ps(random…)和(ps(sin…)等正在(正确地)转换为javascript。非常感谢。我在第二个括号中缺少ps:regex。我还有一个问题要问。如果我在PS>中执行(随机30),它会导致一个低于30的随机整数。但是(ps:ps(ps:random 30))生成javascript代码,而不是随机数。有没有办法理解潜在的一致性/主题?我将尝试在html表单中使用它进行表单验证。再次感谢你。我想我的评论很复杂。试图简化。在PS>中(随机30)->小于30的整数。(regex“foobar”)抛出错误。(ps(regex“foobar”)->“/foobar/;”在cl用户>(ps:ps(ps:regex“foobar”))->“/foobar/;”。(ps:ps(ps:random 30))->javascript代码,不是30以下的整数。有没有一种方法可以理解预期的结果?函数sine像随机函数一样工作。仅在PS>中给出数值结果,在cl user>中给出js代码。正弦的行为就像随机的。regex的表现似乎有所不同。此外,您能否通过示例类似地说明如何使用带有cl interpol的regex?在执行(ql:quickload:cl interpol)并进入PS>之后,我执行了(PS(regex#?r/([^\s]+)foobar/I)),它抛出了一个错误。没有为#\定义分派函数?先谢谢你。抱歉,我问了你这么多问题。你知道什么是Parenscript,PS:PS是做什么的吗?根据我的理解(如果我遗漏了什么,请纠正我):Parenscript将类似CL的语句(一个子集,以及一些浏览器命令(如窗口、文档等)转换为javascript。从“PS”包内部,我们可以使用普通的PS,从外部(如果我们没有导入/使用它),我们需要PS:PS。所以我的困惑是,为什么在PS>名称空间(随机30)和(sin 0.1)中计算值,而(regex…)不是。而(ps(regex..),(ps(random..)和(ps(sin..)等)正在(正确地)转换为javascript。