Hi, 
I've tinkered with clojures regexes and found a behavior I do not 
understand. 

(def regex "a(.*?)b(.*?)c(.*?)")               ;; The RE string, a little 
strange but valid     
(def input "abbbcc")                           ;; The input, should match 
completely

(import '[java.util.regex Pattern Matcher])    ;; Fst the direct java way 
(def j-pattern (Pattern/compile regex))                
(def j-matcher (.matcher j-pattern input))
(.matches j-matcher)                           ;; Ok 
(def j-res                                     ;; ["abbbcc" "" "bb" "c"]
     (mapv (fn [g] (.group j-matcher g)) 
           (range (inc (.groupCount j-matcher)))))  

(def clj-pattern (re-pattern regex))           ;; Now clojure 
(def clj-res (re-find clj-pattern input))

(= (.pattern clj-pattern) (.pattern j-pattern)) ;; Do we really use same 
RE? (For me: yes)
(= clj-res j-res)                               ;; but the results differ:
                                                ;; clj-res ["abbbc" "" "bb" 
""]  is missing the last "c"

Could someone please explain what I'm missing?

Thanks

-- 
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

Reply via email to