FileDocCategorySizeDatePackage
RegexAppend.javaAPI DocExample1629Wed Apr 10 19:58:04 BST 2002com.ronsoft.books.nio.regex

RegexAppend.java

package com.ronsoft.books.nio.regex;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

/**
 * Test the appendReplacement() and appendTail() methods of the
 * java.util.regex.Matcher class.
 * Created: Dec 28, 2001
 *
 * @author Ron Hitchens (ron@ronsoft.com)
 * @version $Id: RegexAppend.java,v 1.5 2002/04/11 02:58:04 ron Exp $
 */
public class RegexAppend
{
	public static void main (String [] argv)
	{
		String input = "Thanks, thanks very much";
		String regex = "([Tt])hanks";
		Pattern pattern = Pattern.compile (regex);
		Matcher matcher = pattern.matcher (input);
		StringBuffer sb = new StringBuffer();

		// loop while matches are encountered
		while (matcher.find()) {
			if (matcher.group(1).equals ("T")) {
				matcher.appendReplacement (sb, "Thank you");
			} else {
				matcher.appendReplacement (sb, "thank you");
			}
		}

		// complete the transfer to the StringBuffer
		matcher.appendTail (sb);

		// print the result
		System.out.println (sb.toString());

		// Let's try that again, using the $n escape in the replacement
		sb.setLength (0);
		matcher.reset();

		String replacement = "$1hank you";

		// loop while matches are encountered
		while (matcher.find()) {
			matcher.appendReplacement (sb, replacement);
		}

		// complete the transfer to the StringBuffer
		matcher.appendTail (sb);

		// print the result
		System.out.println (sb.toString());

		// And once more, the easy way (because this example is simple)
		System.out.println (matcher.replaceAll (replacement));

		// One last time, using only the String
		System.out.println (input.replaceAll (regex, replacement));
		
	}
}