// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r"^function (\w+)\(").unwrap();
let string = "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
}";
// result will be a tuple containing the start and end indices for the first match in the string
let result = regex.captures(string);
let (start, end) = match result {
Some((s, e)) => (s, e),
None => {
// ...
}
};
println!("{}", &string[start, end]);
}
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 Rust, please visit: https://docs.rs/regex/latest/regex/