一般来说,我可以使用出色的rx
宏来创建可读的正则表达式,并确保我已经转义了正确的元字符。
(rx (any "A-Z")) ;; "[A-Z]"
但是,我不知道如何创建害羞的团体,例如\(?:AB\)
. rx
有时会在其输出中产生它们:
(rx (or "ab" "bc")) ;; "\\(?:ab\\|bc\\)"
但我想明确添加它们。我可以:
(rx (regexp "\\(?:AB\\)"))
但这违背了rx
.
在一个完美的世界里,我希望能够写:
(rx (shy-group "A"))
我会接受这样的事情(这些都不起作用):
;; sadly, `regexp` only accepts literal strings
(rx (regexp (format "\\(?:%s\\)" (rx WHATEVER))))
;; also unfortunate, `eval` quotes the string it's given
(rx (eval (format "\\(?:%s\\)" (rx WHATEVER))))
如何使用害羞组创建正则表达式rx
?