Re: search and replace loop example (java.util.regex -> org.apache.regexp)

Kevin Rodgers <[email protected]> Fri, 10 Sep 2004 08:43:55 -0600
Newsgroups gmane.comp.jakarta.regexp.user
Organization Information Handling Services, Electronic Systems Development
Message-ID <[email protected]>
Kevin Rodgers writes:
> The Matcher.appendReplacement method has a great example of how to
> efficiently replace matched text in a loop:
> 
> 	Pattern p = Pattern.compile("cat");
> 	Matcher m = p.matcher("one cat two cats in the yard");
> 	StringBuffer sb = new StringBuffer();
> 	while (m.find()) {
> 	    m.appendReplacement(sb, "dog");
> 	}
> 	m.appendTail(sb);
> 	System.out.println(sb.toString());
> 
> (see http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html)
> 
> What's the corresponding code using the RE class?

Here's what I've come up with:

	RE re = new RE("cat");
	String s = "one cat two cats in the yard";
 	StringBuffer sb = new StringBuffer();
	int i = 0;
	while (re.match(s, i)) {
	    sb = sb.append(s.subSequence(i, re.getParenStart(0)));
	    sb = sb.append("dog");
	    i = re.getParenEnd(0)
	}
	if (i == 0)
	   System.out.println(s);
	else {
	   sb = sb.append(s.substring(i));
	   System.out.println(sb.toString());
	}

Comments?

-- 
Kevin Rodgers