package com.ronsoft.books.nio.regex; import java.util.regex.Pattern; import java.util.regex.Matcher; /** * Exercise the replacement capabilities of the java.util.regex.Matcher class. * Run this code from the command line with three or more arguments. * 1) First argument is a regular expression * 2) Second argument is a replacement string, optionally with capture group * references ($1, $2, etc) * 3) Any remaining arguments are treated as input strings to which the * regular expression and replacement strings will be applied. * The effect of calling replaceFirst() and replaceAll() for each input string * will be listed. * * Be careful to quote the commandline arguments if they contain spaces or * special characters. * * Created: Jan, 2001 * @author Ron Hitchens (ron@ronsoft.com) * @version $Id: RegexReplace.java,v 1.4 2002/01/21 23:37:02 ron Exp $ */ public class RegexReplace { public static void main (String [] argv) { // sanity check, need at least three args if (argv.length < 3) { System.out.println ("usage: regex replacement input ..."); return; } // save the regex and replacment strings with mnemonic names String regex = argv [0]; String replace = argv [1]; // Compile the expression, only need be done once. Pattern pattern = Pattern.compile (regex); // get a Matcher instance, use a dummy input string for now Matcher matcher = pattern.matcher (""); // print out for reference System.out.println (" regex: '" + regex + "'"); System.out.println (" replacement: '" + replace + "'"); // For each remaining arg string, apply the regex/replacment for (int i = 2; i < argv.length; i++) { System.out.println ("------------------------"); matcher.reset (argv [i]); System.out.println (" input: '" + argv [i] + "'"); System.out.println ("replaceFirst(): '" + matcher.replaceFirst (replace) + "'"); System.out.println (" replaceAll(): '" + matcher.replaceAll (replace) + "'"); } } }