import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^\n"
+ "(?:\n"
+ "[+-]? # optional sign\n"
+ " (?: # start a conditional group\n"
+ " \\d+ # either a nonzero number of digits\n"
+ " | # or a decimal phrase\n"
+ " \\d* # optional digits preceding the decimal\n"
+ " \\.(?=\\d) # a literal decimal followed by at least one digit\n"
+ " \\d* # optionally some more digits\n"
+ " ) # note this group is mandatory!\n"
+ " (?: # start an optional scientific notation group\n"
+ " [eE] # the scientific notation character\n"
+ " [+-]? # optional sign\n"
+ " \\d+ # after sci notation, you cannot go directly to a decimal\n"
+ " )?\n"
+ ")\n"
+ "$";
final String string = "67\n\n"
+ "-4\n"
+ "91.32\n"
+ ".67\n"
+ "-0.1123\n"
+ "4e5\n"
+ "71e-43\n"
+ "-323.456e-4.5\n"
+ "e\n"
+ "54e34e2\n"
+ "543.\n"
+ "43.e23\n"
+ "--323\n"
+ "e655\n"
+ "54e.3\n"
+ "-43e";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS);
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