On 1 April 2013 07:53, Mark Engelberg <mark.engelb...@gmail.com> wrote:
> Yeah, my goal is simply to get (re-pattern #"a\nb") to print (or more
> precisely, pr) as #"a\nb" without affecting the semantics of printing other
> regular expressions, but that seems to be impossible to achieve.  Sigh...

Could you just preprocess the strings passed to re-pattern (or
patterns if you're getting those as input) to replace literal newlines
with escape sequences? I'm assuming you don't care about ?x given the
result you wish to achieve.

Otherwise, I haven't done much testing on this, but perhaps you could
see whether it would work for you:

(defn pr-pattern [pat]
  (print (str "#\""
              (.replaceAll (re-matcher (re-pattern "\n")
                                       (.toString pat))
                           "\\\\n")
              "\"")))

user=> (pr-pattern (re-pattern "a\nb"))
#"a\nb"nil
user=> (pr-pattern #"a\nb")
#"a\nb"nil

(The nils are of course the return values. There are indeed four
backslashes in the replacement string literal, since
Matcher.replaceAll has its own escaping for $ (captured subsequence
reference when not escaped) and \.)

Cheers,
Michał

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to