如何使用变量作为正则表达式值?

象嘉道*_*象嘉道 3 lisp regex scheme racket

例如:

(regexp-match #rx"a|b" "cat")
Run Code Online (Sandbox Code Playgroud)

我想绑定一个变量,"a|b"以便我可以动态创建模式.

Ósc*_*pez 6

您可以根据需要动态构建模式(请参阅文档),如下所示:

(regexp "a|b")
> #rx"a|b"
Run Code Online (Sandbox Code Playgroud)

请注意,模式只是一个字符串,该regexp过程负责将其转换为正则表达式对象.该#rx""符号是一个正则表达式的只是文字表示,可以通过使用达到同样的效果regexp的过程.之后,正则表达式可以绑定到变量:

(let ((regexp (regexp "a|b")))
  (regexp-match regexp "cat"))
Run Code Online (Sandbox Code Playgroud)

或用作过程参数:

(define (matcher regexp)
  (regexp-match regexp "cat"))

(matcher (regexp "a|b"))
Run Code Online (Sandbox Code Playgroud)

或者你想要的任何其他方式.