我在使用Racket / Scheme中的正则表达式匹配字符串中的括号时遇到困难。我认为你必须逃避括号,因为它用于正则表达式中的其他东西,我试过:
(regexp-match #rx"(" "(")
(regexp-match #rx"\(" "(")
(regexp-match #rx"[\(]" "(")
这些似乎都不起作用。
答案 0 :(得分:3)
是的,你必须要转义括号,但是在Racket中的regexp文字只是使用普通的字符串解析,所以也必须转义反斜杠。
(regexp-match #rx"\\(" "(") ; => '("(")
答案 1 :(得分:2)
您需要在此处使用double escapes。
(regexp-match #rx"\\(" "(")
答案 2 :(得分:0)
在Scheme中没有regexp-match
(仅适用于#!racket
)。但是,您有SRFI-115实现标准Scheme报告的正则表达式。有了这个RE实现,答案是这样的:
(regexp-matches? "(" "(") ; ==> #t
您不需要引用它的原因是因为Scheme正则表达式使用列表结构来表示复杂的匹配。例如:
(regexp-search '(w/nocase (~ ("Aab"))) "b") => #<regexp-match>