The goal of this post is to show how to match words and replace them in a string using java. We are looking for words of three characters that start with a lower case letter and are followed by two digits. It took me a while to remember about the word boundaries (those represented by \\b). Pay attention to that. By the way, this exercise I found on the book Competitive Programming.

import java.util.*;

class Main {
  public static void main(String[] args) throws Exception{
    Scanner scan = new Scanner(System.in);
    String foo = scan.nextLine();
    scan.close();
    // replaces all special words by ***
    // b means we are looking for word boundaries
    String foo2 = foo.replaceAll(
      "\\b[a-z][0-9][0-9]\\b",
      "***"
    );
    System.out.println(foo2);
    }
}

Compiling, running, giving an input and receiving an output:

$ javac string_replace.java
$ java Main
# input
a70 and z72, aa24 and a873
#output
*** and ***, aa24 and a873

That’s all for this post. Thanks for reading!