import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(([NnSs+-])?([0-8]?\\d(\\.\\d*)?|90(\\.0*)?)([°˚º^~*NnSs+-])*)([,:;\\s|\\/\\\\-]+)(([EeWw+-])*([0]?\\d?\\d(\\.\\d*)?|1[0-7]\\d(\\.\\d*)?|180(\\.0*)?)[°˚º^~*]*([EeWw+-])*)[\\s]*$";
final String string = "//check all zeros\n"
+ "0 0\n"
+ "0.0 0.0\n"
+ "0.000 0.000\n"
+ "0.0000 0.0000\n\n"
+ "//check plus and minus signs\n"
+ "+0 0\n"
+ "+0.0 0.0\n"
+ "+0.000 0.000\n"
+ "+0.0000 0.0000\n\n"
+ "0 +0\n"
+ "0.0 +0.0\n"
+ "0.000 +0.000\n"
+ "0.0000 +0.0000\n\n"
+ "+0 +0\n"
+ "+0.0 +0.0\n"
+ "+0.000 +0.000\n"
+ "+0.0000 +0.0000\n\n"
+ "-0 0\n"
+ "-0.0 0.0\n"
+ "-0.000 0.000\n"
+ "-0.0000 0.0000\n\n"
+ "0 -0\n"
+ "0.0 -0.0\n"
+ "0.000 -0.000\n"
+ "0.0000 -0.0000\n\n"
+ "-0 -0\n"
+ "-0.0 -0.0\n"
+ "-0.000 -0.000\n"
+ "-0.0000 -0.0000\n\n"
+ "0+ 0\n"
+ "0.0+ 0.0\n"
+ "0.000+ 0.000\n"
+ "0.0000+ 0.0000\n\n"
+ "0 0+\n"
+ "0.0 0.0+\n"
+ "0.000 0.000+\n"
+ "0.0000 0.0000+\n\n"
+ "0- 0\n"
+ "0.0- 0.0\n"
+ "0.000- 0.000\n"
+ "0.0000- 0.0000\n\n"
+ "0 0-\n"
+ "0.0 0.0-\n"
+ "0.000 0.000-\n"
+ "0.0000 0.0000-\n\n"
+ "0+ 0+\n"
+ "0.0+ 0.0+\n"
+ "0.000+ 0.000+\n"
+ "0.0000+ 0.0000+\n\n"
+ "0- 0-\n"
+ "0.0- 0.0-\n"
+ "0.000- 0.000-\n"
+ "0.0000- 0.0000-\n\n"
+ "//check hemipshere\n"
+ "0N 0\n"
+ "0.0N 0.0\n"
+ "0.000N 0.00\n"
+ "0.0000N 0.000\n\n"
+ "0N 0E\n"
+ "0.0N 0.0E\n"
+ "0.000N 0.00E\n"
+ "0.0000N 0.000E\n\n"
+ "0N 0W\n"
+ "0.0N 0.0W\n"
+ "0.000N 0.00W\n"
+ "0.0000N 0.000W\n\n"
+ "0S 0\n"
+ "0.0S 0\n"
+ "0.000S 0\n"
+ "0.0000S 0\n\n"
+ "0S 0E\n"
+ "0.0S 0.0E\n"
+ "0.000S 0.00E\n"
+ "0.0000S 0.000E\n\n"
+ "0S 0W\n"
+ "0.0S 0.0W\n"
+ "0.000S 0.00W\n"
+ "0.0000S 0.000W\n\n"
+ "//check degree symbols\n"
+ "0° 0°\n"
+ "0.0° 0.0°\n"
+ "0.000° 0.000°\n"
+ "0.0000° 0.0000°\n\n"
+ "0˚ 0˚\n"
+ "0.0˚ 0.0˚\n"
+ "0.000˚ 0.000˚\n"
+ "0.0000˚ 0.0000˚\n\n"
+ "0º 0º\n"
+ "0.0º 0.0º\n"
+ "0.000º 0.000º\n"
+ "0.0000º 0.0000º\n\n"
+ "0^ 0^\n"
+ "0.0^ 0.0^\n"
+ "0.000^ 0.000^\n"
+ "0.0000^ 0.0000^\n\n"
+ "0* 0*\n"
+ "0.0* 0.0*\n"
+ "0.000* 0.000*\n"
+ "0.0000* 0.0000*\n\n"
+ "0~ 0~\n"
+ "0.0~ 0.0~\n"
+ "0.000~ 0.000~\n"
+ "0.0000~ 0.0000~\n\n"
+ "//check sperators\n\n"
+ "0,0\n"
+ "0.0,0.0\n"
+ "0.000,0.000\n"
+ "0.0000,0.0000\n\n"
+ "0-0\n"
+ "0.0-0.0\n"
+ "0.000-0.000\n"
+ "0.0000-0.0000\n\n"
+ "0:0\n"
+ "0.0:0.0\n"
+ "0.000:0.000\n"
+ "0.0000:0.0000\n\n"
+ "0;0\n"
+ "0.0;0.0\n"
+ "0.000;0.000\n"
+ "0.0000;0.0000\n\n"
+ "0|0\n"
+ "0.0|0.0\n"
+ "0.000|0.000\n"
+ "0.0000|0.0000\n\n"
+ "0/0\n"
+ "0.0/0.0\n"
+ "0.000/0.000\n"
+ "0.0000/0.0000\n\n"
+ "0\\0\n"
+ "0.0\\0.0\n"
+ "0.000\\0.000\n"
+ "0.0000\\0.0000\n\n"
+ "90,180\n"
+ "45,45\n\n\n"
+ "//invalid\n"
+ "90.123 0.0\n"
+ "91.0 0\n"
+ "91.00 0\n"
+ "91.0 0.0\n"
+ "91.00 0.00\n"
+ "0 180.1\n"
+ "0 181\n\n\n";
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