const regex = new RegExp('^(?P<disabled># *)?(?P<min>\\*/\\d+|\\*|(?:\\d+,?)+)(?: )(?P<hour>\\*/\\d+|\\*|(?:\\d+,?)+)(?: )(?P<day>\\*/\\d+|\\*|(?:\\d+,?)+)(?: )(?P<month>\\*/\\d+|\\*|(?:\\d+,?)+)(?: )(?P<dayofweek>\\*/\\d+|\\*|(?:\\d+,?)+)', 'gm')
const str = `PATH=/home/minecraft/.virtualenvs/charfred/bin:/usr/local/bin:/bin:/usr/bin:/home/minecraft/bin:/usr/local/sbin:/usr/sbin
# Don't touch the above, pretty please!
# =====================================================================
# === These are my jobs, they may not be pretty, but they are mine. ===
# =====================================================================
#
# This first one is an example job for the replacement to STC_Control:
#
# */5 * * * * spiffy status Revelation >> /home/minecraft/logs/test.log 2>&1
#
# =====================================================================
# Variables here! Less typing, more lazy!:
# Paths to log directories:
ETERNALLOGS=/home/minecraft/logs/Eternal
ETERNALVIPLOGS=/home/minecraft/logs/EternalVIP
REVELATIONLOGS=/home/minecraft/logs/Revelation
ENIGMATICALOGS=/home/minecraft/logs/Enigmatica
BUNGEELOGS=/home/minecraft/logs/Bungee
BACKUPLOGS=/home/minecraft/logs/Backups
CHARFREDLOGS=/home/minecraft/logs/Charfred_III
PO3LOGS=/home/minecraft/logs/PO3
DDSSLOGS=/home/minecraft/logs/DDSS
BURIEDLOGS=/home/minecraft/logs/Buried
DIREWOLF147LOGS=/home/minecraft/logs/Direwolf147
TFCRLOGS=/home/minecraft/logs/TFCR
# ================
# Real jobs below:
# == ~~~~~~~~~~ ==
# -~- Start Servers on Reboot -~-
@reboot spiffy start Eternal >> \$ETERNALLOGS/startup.log 2>&1
@reboot spiffy start EternalVIP >> \$ETERNALVIPLOGS/startup.log 2>&1
@reboot spiffy start Revelation >> \$REVELATIONLOGS/startup.log 2>&1
@reboot spiffy start Enigmatica >> \$ENIGMATICALOGS/startup.log 2>&1
@reboot spiffy start PO3 >> \$PO3LOGS/startup.log 2>&1
@reboot spiffy start DDSS >> \$DDSSLOGS/startup.log 2>&1
# @reboot spiffy start Buried >> \$BURIEDLOGS/startup.log 2>&1
# @reboot spiffy start Direwolf147 >> \$DIREWOLF147/startup.log 2>&1
# -~- Server Online Keeper -~-
*/15 * * * * spiffy start Eternal >> \$ETERNALLOGS/failsafe.log 2>&1
*/15 * * * * spiffy start EternalVIP >> \$ETERNALVIPLOGS/failsafe.log 2>&1
*/15 * * * * spiffy start Revelation >> \$REVELATIONLOGS/failsafe.log 2>&1
*/15 * * * * spiffy start Enigmatica >> \$ENIGMATICALOGS/failsafe.log 2>&1
# */15 * * * * spiffy start PO3 >> \$PO3LOGS/failsafe.log 2>&1
*/15 * * * * spiffy start DDSS >> \$DDSSLOGS/failsafe.log 2>&1
# */15 * * * * spiffy start Buried >> \$BURIEDLOGS/failsafe.log 2>&1
# */15 * * * * spiffy start Direwolf147 >> \$DIREWOLF147LOGS/failsafe.log 2>&1
# -~- Scheduled Restarts -~-
0 7,19 * * * spiffy restart Revelation 10m >> \$REVELATIONLOGS/restarts.log 2>&1
0 8,14,20,2 * * * spiffy restart Enigmatica 10m >> \$ENIGMATICALOGS/restarts.log 2>&1
0 5,9,13,17,21,1 * * * spiffy restart DDSS 10m >> \$DDSSLOGS/restarts.log 2>&1
30 2,8,14,20 * * * spiffy restart PO3 10m >> \$PO3LOGS/restarts.log 2>&1
30 5,9,13,17,21,1 * * * spiffy restart Eternal 10m >> \$ETERNALLOGS/restarts.log 2>&1
30 3,11,19 * * * spiffy restart EternalVIP 10m >> \$ETERNALVIPLOGS/restarts.log 2>&1
# -~- World Backups -~-
# ===== Info =====
# Each backup takes about 4 minutes on the larger worlds and taxes one CPU core to 100%;
# If multiple servers are specified in the same command, they'll be done sequentially,
# meaning that backing up 4 servers in one command will take about 16min total.
# === End Info ===
0,10,20,30 0,4,8,12,16,20 * * * spiffy backup PO3 >> \$BACKUPLOGS/po3.log 2>&1
30 0,4,8,12,16,20 * * * spiffy backup DDSS >> \$BACKUPLOGS/DDSS.log 2>&1
# 0 1,5,9,13,17,21 * * * spiffy backup Direwolf147 >> \$BACKUPLOGS/Direwolf147.log 2>&1
30 1,5,9,13,17,21 * * *spiffy backup Revelation >> \$REVELATIONLOGS/Revelation.log 2>&1
# 0 2,6,10,14,18,22 * * * spiffy backup Buried >> \$BACKUPLOGS/buried.log 2>&1
30 2,6,10,14,18,22 * * * spiffy backup Enigmatica >> \$BACKUPLOGS/enigmatica.log 2>&1
0 3,7,11,15,19,23 * * * spiffy backup Eternal >> \$BACKUPLOGS/eternal.log 2>&1
15 1,5,9,13,17,21 * * * spiffy backup EternalVIP >> \$BACKUPLOGS/eternalvip.log 2>&1
# -~- Quest Backups -~-
*/15 * * * * spiffy questbackup DDSS >> \$BACKUPLOGS/quests.log 2>&1
*/15 * * * * spiffy questbackup PO3 >> \$BACKUPLOGS/quests.log 2>&1
*/15 * * * * spiffy questbackup Enigmatica >> \$BACKUPLOGS/quests.log 2>&1
*/15 * * * * spiffy questbackup Eternal >> \$BACKUPLOGS/quests.log 2>&1
*/15 * * * * spiffy questbackup EternalVIP >> \$BACKUPLOGS/quests.log 2>&1
# -~- Charfred_III related Jobs -~-
@reboot /home/minecraft/charloader.zsh
# -~- inotify watcher for betterquesting -~-
# @reboot screen -h 100 -dmS charredobserverI /home/minecraft/directorywatchforjinspleasure.zsh
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
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 JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions