import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^function (\\w+)\\(";
final String string = "function Date(Y, M, D, h, m, s, ms) { // 1397\n"
+ " var length = arguments.length; // 1398\n"
+ " var date; // 1399\n"
+ " if (this instanceof NativeDate) { // 1400\n"
+ " var seconds = s; // 1401\n"
+ " var millis = ms; // 1402\n"
+ " if (hasSafariSignedIntBug && length >= 7 && ms > maxSafeUnsigned32Bit) { // 1403\n"
+ " // work around a Safari 8/9 bug where it treats the seconds as signed // 1404\n"
+ " var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit; // 1405\n"
+ " var sToShift = Math.floor(msToShift / 1e3); // 1406\n"
+ " seconds += sToShift; // 1407\n"
+ " millis -= sToShift * 1e3; // 1408\n"
+ " } // 1409\n"
+ " date = length === 1 && $String(Y) === Y ? // isString(Y) // 1410\n"
+ " // We explicitly pass it through parse: // 1411\n"
+ " new NativeDate(DateShim.parse(Y)) : // 1412\n"
+ " // We have to manually make calls depending on argument // 1413\n"
+ " // length here // 1414\n"
+ " length >= 7 ? new NativeDate(Y, M, D, h, m, seconds, millis) : // 1415\n"
+ " length >= 6 ? new NativeDate(Y, M, D, h, m, seconds) : // 1416\n"
+ " length >= 5 ? new NativeDate(Y, M, D, h, m) : // 1417\n"
+ " length >= 4 ? new NativeDate(Y, M, D, h) : // 1418\n"
+ " length >= 3 ? new NativeDate(Y, M, D) : // 1419\n"
+ " length >= 2 ? new NativeDate(Y, M) : // 1420\n"
+ " length >= 1 ? new NativeDate(Y instanceof NativeDate ? +Y : Y) : // 1421\n"
+ " new NativeDate(); // 1422\n"
+ " } else { // 1423\n"
+ " date = NativeDate.apply(this, arguments); // 1424\n"
+ " } // 1425\n"
+ " if (!isPrimitive(date)) { // 1426\n"
+ " // Prevent mixups with unfixed Date object // 1427\n"
+ " defineProperties(date, { constructor: DateShim }, true); // 1428\n"
+ " } // 1429\n"
+ " return date; // 1430\n"
+ " }";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
if (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