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

时间:2012-11-07 01:11:39

标签: regex lisp scheme racket

例如:

(regexp-match #rx"a|b" "cat")

我想将变量绑定到"a|b",以便我可以动态创建模式。

1 个答案:

答案 0 :(得分:6)

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

(regexp "a|b")
> #rx"a|b"

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

(let ((regexp (regexp "a|b")))
  (regexp-match regexp "cat"))

或用作程序参数:

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

(matcher (regexp "a|b"))

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