一般に、優れた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
ですか?