Nếu tôi cố gắng nàyngoặc Thoát trong Clojure
(import java.util.regex.Pattern)
(Pattern/compile ")[email protected]#$%^&*()")
hay này
(def p #")[email protected]#$%^&*()")
Tôi đã Clojure phàn nàn rằng có một chưa từng có/không khép kín )
. Tại sao các dấu ngoặc được đánh giá trong chuỗi đơn giản này? Làm thế nào để thoát khỏi chúng? Cảm ơn
EDIT: Trong khi thoát công trình trong cú pháp clojure cụ thể (#""
), nó không hoạt động với Pattern/compile
cú pháp mà tôi cần phải bởi vì tôi phải biên dịch patter regex động từ một chuỗi.
Tôi đã thử với re-pattern
, nhưng tôi không thể thoát khỏi đúng đối với một số lý do:
(re-pattern "\)[email protected]#$%^&*\(\)")
java.lang.Exception: Unsupported escape character: \)
java.lang.Exception: Unable to resolve symbol: ! in this context (NO_SOURCE_FILE:0)
java.lang.Exception: No dispatch macro for: $
java.lang.Exception: Unable to resolve symbol: % in this context (NO_SOURCE_FILE:0)
java.lang.IllegalArgumentException: Metadata can only be applied to IMetas
EDIT 2 chức năng nhỏ này có thể giúp:
(defn escape-all [x]
(str "\\" (reduce #(str %1 "\\" %2) x)))
Ngoài ra, tôi không nghĩ bạn cần nhập, bạn chỉ có thể sử dụng chức năng 'tái mẫu 'của Clojure. –
bạn nói đúng. tôi vẫn không thể làm được. vui lòng xem bản chỉnh sửa của tôi. – pistacchio