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|90)[°˚º^~*\\s\\-_]+([0-5]?\\d|\\d)['′\\s\\-_]+([0-5]?\\d|\\d)([.]\\d*)?[\"¨˝\\s\\-_]*([\\+\\-NnSs])?)([\\s\\-_:|,;\\/\\\\]+)(([\\+\\-EeWw])?([0]?\\d?\\d|1[0-7]\\d|180)[°˚º^~*\\s\\-_]+([0-5]\\d|\\d)['′\\s\\-_]+([0-5]?\\d|\\d)([.]\\d*)?[\"¨˝\\s_]*([\\+\\-EeWw])?)[\\s]*$";
final String string = "+0 0 0 0 0 0\n"
+ "0 0 0+ 0 0 0\n"
+ "0 0 0 +0 0 0\n"
+ "0 0 0 0 0 0+\n"
+ "-0 0 0 0 0 0\n"
+ "0 0 0- 0 0 0\n"
+ "0 0 0 -0 0 0\n"
+ "0 0 0 0 0 0-\n"
+ "+0 0 0 +0 0 0\n"
+ "0 0 0+ 0 0 0+\n"
+ "0 0 0+ 0 0 0\n"
+ "0 0 0 0 0 0+\n\n"
+ "// check divider\n"
+ "0 0 0 0 0 0\n"
+ "0 0 0 0 0 0\n"
+ "0 0 0|0 0 0\n"
+ "0 0 0:0 0 0\n"
+ "0 0 0,0 0 0\n"
+ "0 0 0;0 0 0\n"
+ "0 0 0 | 0 0 0\n"
+ "0 0 0 , 0 0 0\n"
+ "0 0 0 - 0 0 0\n"
+ "0 0 0 : 0 0 0\n"
+ "0 0 0 ; 0 0 0\n"
+ "0 0 0 ;; 0 0 0\n"
+ "0 0 0 || 0 0 0\n"
+ "0 0 0 \\ 0 0 0\n"
+ "0 0 0 / 0 0 0\n"
+ "0 0 0N 0 0 0\n"
+ "0 0 0n 0 0 0\n"
+ "0 0 0S 0 0 0\n"
+ "0 0 0s 0 0 0\n"
+ "0 0 0N 0 0 0W\n"
+ "0 0 0n 0 0 0w\n"
+ "0 0 0S 0 0 0e\n"
+ "0 0 0s 0 0 0E\n"
+ "0 0 0 0 0 0W\n"
+ "0 0 0 0 0 0w\n"
+ "0 0 0 0 0 0e\n"
+ "0 0 0 0 0 0E\n\n"
+ "//check + and - signs\n\n"
+ "+0 0 0 0 0 0\n"
+ "0 0 0+ 0 0 0\n"
+ "0 0 0 +0 0 0\n"
+ "0 0 0 0 0 0+\n"
+ "-0 0 0 0 0 0\n"
+ "0 0 0- 0 0 0\n"
+ "0 0 0 -0 0 0\n"
+ "0 0 0 0 0 0-\n"
+ "+0 0 0 +0 0 0\n"
+ "0 0 0+ 0 0 0+\n"
+ "0 0 0+ 0 0 0\n"
+ "0 0 0 0 0 0+\n\n"
+ "// check all zeros\n\n"
+ "00 00 00 N 000 00 00 E\n"
+ "00 00 00 N 000 00 0 E\n"
+ "00 00 00 N 000 0 00 E\n"
+ "00 00 00 N 000 0 0 E\n"
+ "00 00 00 N 00 00 00 E\n"
+ "00 00 00 N 00 00 0 E\n"
+ "00 00 00 N 00 0 0 E\n"
+ "00 00 00 N 0 00 00 E\n"
+ "00 00 00 N 0 0 00 E\n"
+ "00 00 00 N 0 0 0 E\n\n"
+ "00 00 0 N 000 00 00 E\n"
+ "00 00 0 N 000 00 0 E\n"
+ "00 00 0 N 000 0 00 E\n"
+ "00 00 0 N 000 0 0 E\n"
+ "00 00 0 N 00 00 00 E\n"
+ "00 00 0 N 00 00 0 E\n"
+ "00 00 0 N 00 0 0 E\n"
+ "00 00 0 N 0 00 00 E\n"
+ "00 00 0 N 0 0 00 E\n"
+ "00 00 0 N 0 0 0 E \n\n"
+ "00 0 00 N 000 00 00 E\n"
+ "00 0 00 N 000 00 0 E\n"
+ "00 0 00 N 000 0 00 E\n"
+ "00 0 00 N 000 0 0 E\n"
+ "00 0 00 N 00 00 00 E\n"
+ "00 0 00 N 00 00 0 E\n"
+ "00 0 00 N 00 0 0 E\n"
+ "00 0 00 N 0 00 00 E\n"
+ "00 0 00 N 0 0 00 E\n"
+ "00 0 00 N 0 0 0 E\n\n"
+ "0 00 00 N 000 00 00 E\n"
+ "0 00 00 N 000 00 0 E\n"
+ "0 00 00 N 000 0 00 E\n"
+ "0 00 00 N 000 0 0 E\n"
+ "0 00 00 N 00 00 00 E\n"
+ "0 00 00 N 00 00 0 E\n"
+ "0 00 00 N 00 0 0 E\n"
+ "0 00 00 N 0 00 00 E\n"
+ "0 00 00 N 0 0 00 E\n"
+ "0 00 00 N 0 0 0 E\n\n"
+ "0 00 0 N 000 00 00 E\n"
+ "0 00 0 N 000 00 0 E\n"
+ "0 00 0 N 000 0 00 E\n"
+ "0 00 0 N 000 0 0 E\n"
+ "0 00 0 N 00 00 00 E\n"
+ "0 00 0 N 00 00 0 E\n"
+ "0 00 0 N 00 0 0 E\n"
+ "0 00 0 N 0 00 00 E\n"
+ "0 00 0 N 0 0 00 E\n"
+ "0 00 0 N 0 0 0 E \n\n"
+ "0 0 00 N 000 00 00 E\n"
+ "0 0 00 N 000 00 0 E\n"
+ "0 0 00 N 000 0 00 E\n"
+ "0 0 00 N 000 0 0 E\n"
+ "0 0 00 N 00 00 00 E\n"
+ "0 0 00 N 00 00 0 E\n"
+ "0 0 00 N 00 0 0 E\n"
+ "0 0 00 N 0 00 00 E\n"
+ "0 0 00 N 0 0 00 E\n"
+ "0 0 00 N 0 0 0 E\n\n"
+ "//invalid\n\n"
+ "0 0 0 N 000 00 E\n"
+ "0 0 0 N 000 E\n"
+ "0 0 N 0 0 00 E\n"
+ "0 N 0 0 0E \n\n"
+ "// check valid latitude deg vaules\n\n"
+ "01 00 00 N 000 0 0 E\n"
+ "1 00 00 N 000 0 0 E\n"
+ "09 00 00 N 000 0 0 E\n"
+ "9 00 00 N 000 0 0 E\n"
+ "89 00 00 N 000 0 0 E\n"
+ "90 00 01 N 000 0 0 E\n\n"
+ "+00 00 00 N 000 0 0 E\n"
+ "+0 00 00 N 000 0 0 E\n"
+ "+01 00 00 N 000 0 0 E\n"
+ "+1 00 00 N 000 0 0 E\n"
+ "+09 00 00 N 000 0 0 E\n"
+ "+9 00 00 N 000 0 0 E\n"
+ "+89 00 00 N 000 0 0 E\n"
+ "+90 00 01 N 000 0 0 E\n\n"
+ "-00 00 00 N 000 0 0 E\n"
+ "-0 00 00 N 000 0 0 E\n"
+ "-01 00 00 N 000 0 0 E\n"
+ "-1 00 00 N 000 0 0 E\n"
+ "-09 00 00 N 000 0 0 E\n"
+ "-9 00 00 N 000 0 0 E\n"
+ "-89 00 00 N 000 0 0 E\n"
+ "-90 00 01 N 000 0 0 E\n\n"
+ "00 00 00 000 0 0\n"
+ "+0 00 00 000 0 0\n"
+ "+01 00 00 000 0 0\n"
+ "+1 00 00 000 0 0\n"
+ "+09 00 00 000 0 0\n"
+ "+9 00 00 000 0 0\n"
+ "+89 00 00 000 0 0\n"
+ "+90 00 01 000 0 0\n\n"
+ "//invalid\n"
+ "91 00 01 N 000 0 0 E\n"
+ "000 00 01 N 000 0 0 E\n"
+ "089 00 01 N 000 0 0 E\n\n"
+ "// check valid latitude minute vaules\n\n"
+ "00 01 00 N 000 0 0 E\n"
+ "00 1 00 N 000 0 0 E\n\n"
+ "00 09 00 N 000 0 0 E\n"
+ "00 9 00 N 000 0 0 E\n\n"
+ "00 59 00 N 000 0 0 E\n\n"
+ "//invalid\n\n"
+ "00 60 00 N 000 0 0 E\n"
+ "00 59.55 00 N 000 0 0 E\n\n"
+ "// check valid latitude second vaules\n\n"
+ "00 00 01 N 000 0 0 E\n"
+ "00 00 1 N 000 0 0 E\n\n"
+ "00 00 09 N 000 0 0 E\n"
+ "00 00 9 N 000 0 0 E\n\n"
+ "00 00 59 N 000 0 0 E\n\n"
+ "00 00 01.001 N 000 0 0 E\n"
+ "00 00 1.001 N 000 0 0 E\n\n"
+ "00 00 09.001 N 000 0 0 E\n"
+ "00 00 9.001 N 000 0 0 E\n\n"
+ "00 00 59.001 N 000 0 0 E\n\n"
+ "//invalid\n\n"
+ "00 00 60 N 000 0 0 E\n"
+ "00 00 60.999 N 000 0 0 E\n\n"
+ "//check valid longitute degree values\n\n"
+ "00 00 0 N 001 0 0 E\n"
+ "00 00 0 N 01 0 0 E\n"
+ "00 00 0 N 1 0 0 E\n"
+ "00 00 0 N 10 0 0 E\n"
+ "00 00 0 N 99 0 0 E\n"
+ "00 00 0 N 100 0 0 E\n"
+ "00 00 0 N 179 0 0 E\n"
+ "00 00 0 N 79 0 0 E\n"
+ "00 00 0 N 180 0 0 E\n\n"
+ "00 00 0 N 001° 0 0 E\n"
+ "00 00 0 N 01° 0 0 E\n"
+ "00 00 0 N 1° 0 0 E\n"
+ "00 00 0 N 10° 0 0 E\n"
+ "00 00 0 N 99° 0 0 E\n"
+ "00 00 0 N 100° 0 0 E\n"
+ "00 00 0 N 179° 0 0 E\n"
+ "00 00 0 N 79° 0 0 E\n"
+ "00 00 0 N 180° 0 0 E\n\n"
+ "00 00 0 N 001˚ 0 0 E\n"
+ "00 00 0 N 01˚ 0 0 E\n"
+ "00 00 0 N 1˚ 0 0 E\n"
+ "00 00 0 N 10˚ 0 0 E\n"
+ "00 00 0 N 99˚ 0 0 E\n"
+ "00 00 0 N 100˚ 0 0 E\n"
+ "00 00 0 N 179˚ 0 0 E\n"
+ "00 00 0 N 79˚ 0 0 E\n"
+ "00 00 0 N 180˚ 0 0 E\n\n"
+ "00 00 0 N 001º 0 0 E\n"
+ "00 00 0 N 01º 0 0 E\n"
+ "00 00 0 N 1º 0 0 E\n"
+ "00 00 0 N 10º 0 0 E\n"
+ "00 00 0 N 99º 0 0 E\n"
+ "00 00 0 N 100º 0 0 E\n"
+ "00 00 0 N 179º 0 0 E\n"
+ "00 00 0 N 79º 0 0 E\n"
+ "00 00 0 N 180º 0 0 E\n\n"
+ "00 00 0 N 001^ 0 0 E\n"
+ "00 00 0 N 01^ 0 0 E\n"
+ "00 00 0 N 1^ 0 0 E\n"
+ "00 00 0 N 10^ 0 0 E\n"
+ "00 00 0 N 99^ 0 0 E\n"
+ "00 00 0 N 100^ 0 0 E\n"
+ "00 00 0 N 179^ 0 0 E\n"
+ "00 00 0 N 79^ 0 0 E\n"
+ "00 00 0 N 180^ 0 0 E\n\n"
+ "00 00 0 N 001~ 0 0 E\n"
+ "00 00 0 N 01~ 0 0 E\n"
+ "00 00 0 N 1~ 0 0 E\n"
+ "00 00 0 N 10~ 0 0 E\n"
+ "00 00 0 N 99~ 0 0 E\n"
+ "00 00 0 N 100~ 0 0 E\n"
+ "00 00 0 N 179~ 0 0 E\n"
+ "00 00 0 N 79~ 0 0 E\n"
+ "00 00 0 N 180~ 0 0 E\n\n"
+ "00 00 0 N 001* 0 0 E\n"
+ "00 00 0 N 01* 0 0 E\n"
+ "00 00 0 N 1* 0 0 E\n"
+ "00 00 0 N 10* 0 0 E\n"
+ "00 00 0 N 99* 0 0 E\n"
+ "00 00 0 N 100* 0 0 E\n"
+ "00 00 0 N 179* 0 0 E\n"
+ "00 00 0 N 79* 0 0 E\n"
+ "00 00 0 N 180* 0 0 E\n\n\n"
+ "//invalid\n\n"
+ "00 00 0 N 181 0 0 E\n"
+ "00 00 0 N 1111 0 0 E\n"
+ "00 00 0 N 181° 0 0 E\n"
+ "00 00 0 N 1111° 0 0 E\n"
+ "00 00 0 N 181˚ 0 0 E\n"
+ "00 00 0 N 1111˚ 0 0 E\n"
+ "00 00 0 N 181º 0 0 E\n"
+ "00 00 0 N 1111º 0 0 E\n"
+ "00 00 0 N 181^ 0 0 E\n"
+ "00 00 0 N 1111^ 0 0 E\n"
+ "00 00 0 N 181~ 0 0 E\n"
+ "00 00 0 N 1111~ 0 0 E\n"
+ "00 00 0 N 181* 0 0 E\n"
+ "00 00 0 N 1111* 0 0 E\n\n"
+ "//check valid longitute minute values\n\n"
+ "00 00 0 N 000 01 0 E\n"
+ "00 00 0 N 000 1 0 E\n"
+ "00 00 0 N 000 9 0 E\n"
+ "00 00 0 N 000 09 0 E\n"
+ "00 00 0 N 000 10 0 E\n"
+ "00 00 0 N 000 59 0 E\n"
+ "00 00 0 N 000 5 0 E\n\n"
+ "00 00 0 N 000 01' 0 E\n"
+ "00 00 0 N 000 1' 0 E\n"
+ "00 00 0 N 000 9' 0 E\n"
+ "00 00 0 N 000 09' 0 E\n"
+ "00 00 0 N 000 10' 0 E\n"
+ "00 00 0 N 000 59' 0 E\n"
+ "00 00 0 N 000 5' 0 E\n\n\n"
+ "00 00 0 N 000 01′ 0 E\n"
+ "00 00 0 N 000 1′ 0 E\n"
+ "00 00 0 N 000 9′ 0 E\n"
+ "00 00 0 N 000 09′ 0 E\n"
+ "00 00 0 N 000 10′ 0 E\n"
+ "00 00 0 N 000 59′ 0 E\n"
+ "00 00 0 N 000 5′ 0 E\n\n"
+ "//invalid\n\n"
+ "00 00 0 N 000 60 0 E\n"
+ "00 00 0 N 000 61 0 E\n"
+ "00 00 0 N 000 60' 0 E\n"
+ "00 00 0 N 000 61' 0 E\n"
+ "00 00 0 N 000 60′ 0 E\n"
+ "00 00 0 N 000 61′ 0 E\n\n"
+ "// check degree symbols\n\n"
+ "0° 0' 0\" 0° 0' 0\"\n"
+ "0° 0' 0\" 0˚ 0' 0\"\n"
+ "0° 0' 0\" 0º 0' 0\"\n"
+ "0° 0' 0\" 0^ 0' 0\"\n"
+ "0° 0' 0\" 0~ 0' 0\"\n"
+ "0° 0' 0\" 0* 0' 0\"\n\n"
+ "0˚ 0' 0\" 0° 0' 0\"\n"
+ "0˚ 0' 0\" 0˚ 0' 0\"\n"
+ "0˚ 0' 0\" 0º 0' 0\"\n"
+ "0˚ 0' 0\" 0^ 0' 0\"\n"
+ "0˚ 0' 0\" 0~ 0' 0\"\n"
+ "0˚ 0' 0\" 0* 0' 0\"\n\n"
+ "0º 0' 0\" 0° 0' 0\"\n"
+ "0º 0' 0\" 0˚ 0' 0\"\n"
+ "0º 0' 0\" 0º 0' 0\"\n"
+ "0º 0' 0\" 0^ 0' 0\"\n"
+ "0º 0' 0\" 0~ 0' 0\"\n"
+ "0º 0' 0\" 0* 0' 0\"\n\n"
+ "0^ 0' 0\" 0° 0' 0\"\n"
+ "0^ 0' 0\" 0˚ 0' 0\"\n"
+ "0^ 0' 0\" 0º 0' 0\"\n"
+ "0^ 0' 0\" 0^ 0' 0\"\n"
+ "0^ 0' 0\" 0~ 0' 0\"\n"
+ "0^ 0' 0\" 0* 0' 0\"\n\n"
+ "0~ 0' 0\" 0° 0' 0\"\n"
+ "0~ 0' 0\" 0˚ 0' 0\"\n"
+ "0~ 0' 0\" 0º 0' 0\"\n"
+ "0~ 0' 0\" 0^ 0' 0\"\n"
+ "0~ 0' 0\" 0~ 0' 0\"\n"
+ "0~ 0' 0\" 0* 0' 0\"\n\n"
+ "0* 0' 0\" 0° 0' 0\"\n"
+ "0* 0' 0\" 0˚ 0' 0\"\n"
+ "0* 0' 0\" 0º 0' 0\"\n"
+ "0* 0' 0\" 0^ 0' 0\"\n"
+ "0* 0' 0\" 0~ 0' 0\"\n"
+ "0* 0' 0\" 0* 0' 0\"\n\n"
+ "//check minute symbols\n\n"
+ "0° 00' 00 000° 00' 00\"\n"
+ "0° 00' 00 000° 00' 00\"\n"
+ "0° 00' 00\" 000° 00' 00 \n"
+ "0° 00' 00\" 000° 00' 00\"\n\n"
+ "0° 00′ 00 000° 00′ 00\"\n"
+ "0° 00′ 00 000° 00′ 00\"\n"
+ "0° 00′ 00\" 000° 00′ 00 \n"
+ "0° 00′ 00\" 000° 00′ 00\"\n\n"
+ "0° 00' 00 000° 00′ 00\"\n"
+ "0° 00' 00 000° 00′ 00\"\n"
+ "0° 00' 00\" 000° 00′ 00 \n"
+ "0° 00' 00\" 000° 00′ 00\"\n\n"
+ "0° 00′ 00 000° 00' 00\"\n"
+ "0° 00′ 00 000° 00' 00\"\n"
+ "0° 00′ 00\" 000° 00' 00 \n"
+ "0° 00′ 00\" 000° 00' 00\"\n\n"
+ "//check second symbols\n\n"
+ "0° 00' 00\" N 000° 00' 00\"\n"
+ "0° 00' 00.666\" N 000° 00' 00\" E\n"
+ "0° 00' 00\" N 000° 00' 00.000\" E\n"
+ "0° 00' 00\" N 000° 00' 00\"\n\n"
+ "0° 00' 00¨ N 000° 00' 00¨ E\n"
+ "0° 00' 00.666¨ N 000° 00' 00¨\n"
+ "0° 00' 00¨ N 000° 00' 00.000¨ E\n"
+ "0° 00' 00¨ N 000° 00' 00¨ E\n\n"
+ "0° 00' 00˝ N 000° 00' 00˝ E\n"
+ "0° 00' 00.666˝ N 000° 00' 00˝\n"
+ "0° 00' 00˝ N 000° 00' 00.000˝ E\n"
+ "0° 00' 00˝ N 000° 00' 00˝ E\n\n"
+ "//check full dms with differing spaces\n\n"
+ "0°00'00˝N 000°00'00˝E\n"
+ "0 °00'00˝N 000°00'00˝E\n"
+ "0 ° 00 '00˝N 000°00'00˝E\n"
+ "0 ° 00 '00 ˝N 000°00'00˝E\n"
+ "0 ° 00 '00˝ N 000°00'00˝E\n"
+ "0 ° 00 '00˝ N 000 ° 00'00˝E\n"
+ "0 ° 00 '00˝ N 000 ° 00 '00˝E\n"
+ "0 ° 00 '00˝ N 000 ° 00 ' 00˝E\n"
+ "0 ° 00 '00˝ N 000 ° 00 ' 00 ˝E\n"
+ "0 ° 00 '00˝ N 000 ° 00 ' 00 ˝ E\n\n"
+ "//check full dms prefix / suffix\n\n"
+ "0° 00' 00˝N 000° 00'00˝E\n"
+ "0° 00' 00˝N 000° 00'00˝\n"
+ "0° 00' 00˝ 000° 00'00˝E\n"
+ "N0° 00' 00˝ E000° 00'00˝\n"
+ "N0° 00' 00˝ 000° 00'00˝E\n"
+ "0° 00' 00˝ E000° 00'00˝\n"
+ "N0° 00' 00˝N 000° 00'00˝\n"
+ "0° 00' 00˝ E000° 00'00˝E\n\n"
+ "0° 00' 00˝S 000° 00'00˝E\n"
+ "0° 00' 00˝S 000° 00'00˝\n"
+ "0° 00' 00˝ 000° 00'00˝E\n"
+ "S0° 00' 00˝ E000° 00'00˝\n"
+ "S0° 00' 00˝ 000° 00'00˝E\n"
+ "0° 00' 00˝ E000° 00'00˝\n"
+ "S0° 00' 00˝S 000° 00'00˝\n"
+ "0° 00' 00˝ E000° 00'00˝E\n\n"
+ "0° 00' 00˝N 000° 00'00˝W\n"
+ "0° 00' 00˝N 000° 00'00˝\n"
+ "0° 00' 00˝ 000° 00'00˝W\n"
+ "N0° 00' 00˝ W000° 00'00˝\n"
+ "N0° 00' 00˝ 000° 00'00˝W\n"
+ "0° 00' 00˝ W000° 00'00˝\n"
+ "N0° 00' 00˝N 000° 00'00˝\n"
+ "0° 00' 00˝ W000° 00'00˝W\n\n\n"
+ "0° 00' 00˝S 000° 00'00˝W\n"
+ "0° 00' 00˝S 000° 00'00˝\n"
+ "0° 00' 00˝ 000° 00'00˝W\n"
+ "S0° 00' 00˝ W000° 00'00˝\n"
+ "S0° 00' 00˝ 000° 00'00˝W\n"
+ "0° 00' 00˝ W000° 00'00˝\n"
+ "S0° 00' 00˝S 000° 00'00˝\n"
+ "0° 00' 00˝ E000° 00'00˝W\n\n"
+ "//invalid\n\n"
+ "0° 00' 00˝E 000° 00'00˝E\n"
+ "0° 00' 00˝E 000° 00'00˝W\n"
+ "0° 00' 00˝W 000° 00'00˝W\n"
+ "0° 00' 00˝N 000° 00'00˝S\n"
+ "0° 00' 00˝N 000° 00'00˝N\n"
+ "0° 00' 00˝S 000° 00'00˝S\n"
+ "0° 00' 00˝W 000° 00'00˝S\n"
+ "0° 00' 00˝W 000° 00'00˝N\n"
+ "0° 00' 00˝E 000° 00'00˝S\n"
+ "0° 00' 00˝E 000° 00'00˝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