Opened 7 years ago

Closed 7 years ago

#889 closed defect (invalid)

irregex-match-end gives odd results with chunked searches

Reported by: megane Owned by:
Priority: major Milestone:
Component: core libraries Version: 4.7.x
Keywords: irregex Cc:
Estimated difficulty:

Description

I expected (irregex-match-end-index m 0) to return 4 in the following example:

(let* ((chkr (make-irregex-chunker
	      (lambda (c)
		(and (pair? c)
		     (cdr c))) car))
       (m (irregex-search/chunked "(b)" chkr '("foo" "bar"))))
  (print m)
  (print (irregex-match-start-index m 0))
  (print (irregex-match-end-index m 0))
  (print (irregex-match-start-index m 1))
  (print (irregex-match-end-index m 1)))

;; #<regexp-match (1 submatch)>
;; 3
;; 1
;; 3
;; 1

The result with the version from http://code.google.com/p/irregex/ was:

#(*irregex-match-tag* #(#<procedure (? c)> #<procedure (car p)> #<procedure (? cnk)> #<procedure (? cnk)> #<procedure (? cnk1 start cnk2 end)> #f) () (foo bar) 3 (bar) 1 (foo bar) 3 (bar) 1 #f #f #f #f)
3
1
3
1

Change History (1)

comment:1 Changed 7 years ago by ashinn

  • Resolution set to invalid
  • Status changed from new to closed

This is correct. In the chunked API, the indexes are not
absolute, but instead are relative to the start of the chunk.
You can get the chunk with irregex-match-start/end-chunk.

If this is hard to work with you can use irregex-match-substring
which will just give you a string regardless of whether the
data was chunked or not.

Note: See TracTickets for help on using tickets.