正则表达式匹配字符串中的括号“(”

regexp matching bracket "(" in string

我在 Racket/Scheme 中使用正则表达式匹配字符串中的括号时遇到困难。我认为你必须转义括号,因为它用于正则表达式中的其他内容,我已经尝试过:

(regexp-match #rx"(" "(")

(regexp-match #rx"\(" "(")

(regexp-match #rx"[\(]" "(")

None 这些似乎有效。

是的,您确实需要转义括号,但 Racket 中的正则表达式文字仅使用普通字符串解析,因此您 必须转义反斜杠。

(regexp-match #rx"\(" "(") ; => '("(")

这里需要使用double escapes

(regexp-match #rx"\(" "(")

在 Scheme 中没有 regexp-match(仅在 #!racket 中有效)。但是,您有 SRFI-115 为标准 Scheme 报告实施正则表达式。使用此 RE 实现,答案是:

(regexp-matches? "(" "(") ; ==> #t

之所以不需要引用是因为Scheme正则表达式使用列表结构来表达复杂的匹配。例如:

(regexp-search '(w/nocase (~ ("Aab"))) "b") => #<regexp-match>