import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "([+-])?(\\d\\d)(?:(:?)|\\*)([0-5]\\d)(?:(?:(\\3)|\\')((?:[0-5]\\d)(?:\\.\\d+)?))?([NS])?\\/([+-])?([01]\\d\\d)\\3([0-5]\\d)(?:\\3((?:[0-5]\\d)(?:\\.\\d+)?))?([EW])?\\b";
final String string = "7532N/10458W\n"
+ "7532/10458\n"
+ "753257/1045843\n"
+ "753257N/1045843E\n"
+ "753257.1/1045843.2 \n"
+ "753257.1N/1045843.2E\n"
+ "75:32N/104:58W\n"
+ "75:32/104:58\n"
+ "75:32:57/104:58:43\n"
+ "75:32:57N/104:58:43E\n"
+ "75:32:57.1/104:58:43.2\n"
+ "75:32:57.1N/104:58:43.2E\n\n\n\n"
+ "75*32/10458\n"
+ "75*32'57\"N/104*58'43\"E\n"
+ "75*32'57.1\"/104*58'43.2\"\n"
+ "75*32'57.1\"N/104*58'43.2\"E \n\n"
+ "75:32/10458\n"
+ "75:3257N/104:58:43E\n"
+ "75:32:57.1/104:5843.2\n"
+ "75:32:57.1N/1045843.2E \n";
final Pattern pattern = Pattern.compile(regex);
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