package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`^function (\w+)\(`)
var str = `function Date(Y, M, D, h, m, s, ms) { // 1397
var length = arguments.length; // 1398
var date; // 1399
if (this instanceof NativeDate) { // 1400
var seconds = s; // 1401
var millis = ms; // 1402
if (hasSafariSignedIntBug && length >= 7 && ms > maxSafeUnsigned32Bit) { // 1403
// work around a Safari 8/9 bug where it treats the seconds as signed // 1404
var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit; // 1405
var sToShift = Math.floor(msToShift / 1e3); // 1406
seconds += sToShift; // 1407
millis -= sToShift * 1e3; // 1408
} // 1409
date = length === 1 && $String(Y) === Y ? // isString(Y) // 1410
// We explicitly pass it through parse: // 1411
new NativeDate(DateShim.parse(Y)) : // 1412
// We have to manually make calls depending on argument // 1413
// length here // 1414
length >= 7 ? new NativeDate(Y, M, D, h, m, seconds, millis) : // 1415
length >= 6 ? new NativeDate(Y, M, D, h, m, seconds) : // 1416
length >= 5 ? new NativeDate(Y, M, D, h, m) : // 1417
length >= 4 ? new NativeDate(Y, M, D, h) : // 1418
length >= 3 ? new NativeDate(Y, M, D) : // 1419
length >= 2 ? new NativeDate(Y, M) : // 1420
length >= 1 ? new NativeDate(Y instanceof NativeDate ? +Y : Y) : // 1421
new NativeDate(); // 1422
} else { // 1423
date = NativeDate.apply(this, arguments); // 1424
} // 1425
if (!isPrimitive(date)) { // 1426
// Prevent mixups with unfixed Date object // 1427
defineProperties(date, { constructor: DateShim }, true); // 1428
} // 1429
return date; // 1430
}`
if len(re.FindStringIndex(str)) > 0 {
fmt.Println(re.FindString(str),"found at index",re.FindStringIndex(str)[0])
}
}
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 Golang, please visit: https://golang.org/pkg/regexp/