import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(PO BOX|BOX)+\\s*[A-Z]?[0-9]+[A-Z]*\\s.*$";
final String string = "BOX ELDER CT\n"
+ "PO BOX 111 \n"
+ "PO BOX 191 \n"
+ "39TH ST\n"
+ "6TH ST\n"
+ "4TH AVE\n"
+ "5TH AVE\n"
+ "5TH ST\n"
+ "2ND AVE\n"
+ "15TH AVE\n"
+ "BOX ELDER DR\n"
+ "PO BOX 297 \n"
+ "PO BOX 42 \n"
+ "PO BOX 18 \n"
+ "PO BOX 16 \n"
+ "PO BOX 115A \n"
+ "PO BOX 245 \n"
+ "PO BOX 131 \n"
+ "PO BOX 254 \n"
+ "PO BOX 254 \n"
+ "PO BOX 49B \n"
+ "PO BOX 373 \n"
+ "PO BOX 178 \n"
+ "PO BOX 245 \n"
+ "PO BOX 51 \n"
+ "PO BOX 400 \n"
+ "PO BOX 25 \n"
+ "PO BOX 25 \n"
+ "PO BOX 7 \n"
+ "PO BOX 97 \n"
+ "PO BOX 363 \n"
+ "PO BOX 482 \n"
+ "PO BOX 24 \n"
+ "PO BOX 55 \n"
+ "PO BOX 204 \n"
+ "PO BOX 482 \n"
+ "PO BOX 331 \n"
+ "PO BOX 99 \n"
+ "PO BOX 204 \n"
+ "PO BOX 224C \n"
+ "BOX 246 \n"
+ "BOX 2005 \n"
+ "BOX 431 ATLAN & CLEV \n"
+ "BOX 384 \n"
+ "BOX 22 \n"
+ "BOX 247 \n"
+ "BOX 212 \n"
+ "BOX 85 \n"
+ "PO BOX 192 \n"
+ "PO BOX 192 \n"
+ "BOX 232 \n"
+ "BOX 28 \n"
+ "PO BOX A73 \n"
+ "PO BOX 53 \n"
+ "BOX 4 \n"
+ "PO BOX 266 \n"
+ "BOX 154 \n"
+ "BOX 261 \n"
+ "BOX 82 \n"
+ "BOX ELDER LN\n"
+ "BOX 101 \n"
+ "PO BOX 76 EAST MARKET ";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html