Java Regular Expressions – Single World Replacement Example /Tutorial

Please refer to my previous article for regular expression theory, classes and syntax. In this post I am posting a code that I wrote which does a single word replacement on a string using Pattern and Matcher. The example is straightforward. Please review the comments in the code below. I have placed useful comments at various statements in the code.

package com.kushal.regularexpressions;

/**
 * @author Kushal Paudyal
 * www.sanjaal.com/java
 * Last Modified On 2009-SEPT-16
 *
 * Using Regular Expressions To Replace
 * A Single Word From The String.
 */
import java.util.regex.*;

public class ReplaceSingleWord {
	static String originalString = "Google is Good. "
			+ "Google is Innovative. "
			+ "We think Google is the technology of the era";

	static String replaceWhat = "Google";

	static String replaceWith = "Sanjaal";

	public static void main(String[] args) throws Exception {

		System.out.println("...Before Replacement: \n" + originalString + "\n");

		/**
		 * Create a pattern to match Google.
		 * Pattern.compile () compiles the given regular
		 * expression into a pattern
		 */
		Pattern p = Pattern.compile(replaceWhat);

		// Create a matcher with an input string
		/**
		 * Creating a matcher with the original input string.
		 */
		Matcher m = p.matcher(originalString);

		StringBuffer sb = new StringBuffer();

		System.out.println("...Replacing \'" + replaceWhat + "\' with \'"
				+ replaceWith + "\'.\n");

		/**
		 * Try to find the next subsequence of the input sequence
		 * which patches the pattern.
		 */
		boolean result = m.find();

		/**
		 * Looping through to create a new string
		 * with replacement applied.
		 */
		while (result) {
			m.appendReplacement(sb, replaceWith);
			result = m.find();
		}

		/**
		 * Add the last segment of input to the new String
		 *
		 * appendTail () method Implements a terminal append-and-replace step.
		 * This method reads characters from the input sequence,
		 * starting at the append position, and appends them to
		 * the given string buffer. It is intended to be invoked
		 * after one or more invocations of the appendReplacement
		 * appendReplacement method in order to copy the
		 * remainder of the input sequence.
		 * Parameters:
		 * sb --> The target string buffer
		 * Returns:
		 * The target string buffer
		 */
		m.appendTail(sb);
		System.out.println("...After Replacement:\n" + sb.toString());
	}
}

====================
Output of this program:
…Before Replacement:
Google is Good. Google is Innovative. We think Google is the technology of the era

…Replacing ‘Google’ with ‘Sanjaal’.

…After Replacement:
Sanjaal is Good. Sanjaal is Innovative. We think Sanjaal is the technology of the era

Share