import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?P<disabled># *)?(?P<min>\\*/\\d+|\\*|(?:\\d+,?)+)(?: )(?P<hour>\\*/\\d+|\\*|(?:\\d+,?)+)(?: )(?P<day>\\*/\\d+|\\*|(?:\\d+,?)+)(?: )(?P<month>\\*/\\d+|\\*|(?:\\d+,?)+)(?: )(?P<dayofweek>\\*/\\d+|\\*|(?:\\d+,?)+)";
final String string = "PATH=/home/minecraft/.virtualenvs/charfred/bin:/usr/local/bin:/bin:/usr/bin:/home/minecraft/bin:/usr/local/sbin:/usr/sbin\n\n"
+ "# Don't touch the above, pretty please!\n"
+ "# =====================================================================\n"
+ "# === These are my jobs, they may not be pretty, but they are mine. ===\n"
+ "# =====================================================================\n"
+ "#\n"
+ "# This first one is an example job for the replacement to STC_Control:\n"
+ "#\n"
+ "# */5 * * * * spiffy status Revelation >> /home/minecraft/logs/test.log 2>&1\n"
+ "#\n"
+ "# =====================================================================\n"
+ "# Variables here! Less typing, more lazy!:\n\n"
+ "# Paths to log directories:\n"
+ "ETERNALLOGS=/home/minecraft/logs/Eternal\n"
+ "ETERNALVIPLOGS=/home/minecraft/logs/EternalVIP\n"
+ "REVELATIONLOGS=/home/minecraft/logs/Revelation\n"
+ "ENIGMATICALOGS=/home/minecraft/logs/Enigmatica\n"
+ "BUNGEELOGS=/home/minecraft/logs/Bungee\n"
+ "BACKUPLOGS=/home/minecraft/logs/Backups\n"
+ "CHARFREDLOGS=/home/minecraft/logs/Charfred_III\n"
+ "PO3LOGS=/home/minecraft/logs/PO3\n"
+ "DDSSLOGS=/home/minecraft/logs/DDSS\n"
+ "BURIEDLOGS=/home/minecraft/logs/Buried\n"
+ "DIREWOLF147LOGS=/home/minecraft/logs/Direwolf147\n"
+ "TFCRLOGS=/home/minecraft/logs/TFCR\n\n"
+ "# ================\n"
+ "# Real jobs below:\n"
+ "# == ~~~~~~~~~~ ==\n\n"
+ "# -~- Start Servers on Reboot -~-\n"
+ "@reboot spiffy start Eternal >> $ETERNALLOGS/startup.log 2>&1\n"
+ "@reboot spiffy start EternalVIP >> $ETERNALVIPLOGS/startup.log 2>&1\n"
+ "@reboot spiffy start Revelation >> $REVELATIONLOGS/startup.log 2>&1\n"
+ "@reboot spiffy start Enigmatica >> $ENIGMATICALOGS/startup.log 2>&1\n"
+ "@reboot spiffy start PO3 >> $PO3LOGS/startup.log 2>&1\n"
+ "@reboot spiffy start DDSS >> $DDSSLOGS/startup.log 2>&1\n"
+ "# @reboot spiffy start Buried >> $BURIEDLOGS/startup.log 2>&1\n"
+ "# @reboot spiffy start Direwolf147 >> $DIREWOLF147/startup.log 2>&1\n\n"
+ "# -~- Server Online Keeper -~-\n"
+ "*/15 * * * * spiffy start Eternal >> $ETERNALLOGS/failsafe.log 2>&1\n"
+ "*/15 * * * * spiffy start EternalVIP >> $ETERNALVIPLOGS/failsafe.log 2>&1\n"
+ "*/15 * * * * spiffy start Revelation >> $REVELATIONLOGS/failsafe.log 2>&1\n"
+ "*/15 * * * * spiffy start Enigmatica >> $ENIGMATICALOGS/failsafe.log 2>&1\n"
+ "# */15 * * * * spiffy start PO3 >> $PO3LOGS/failsafe.log 2>&1\n"
+ "*/15 * * * * spiffy start DDSS >> $DDSSLOGS/failsafe.log 2>&1\n"
+ "# */15 * * * * spiffy start Buried >> $BURIEDLOGS/failsafe.log 2>&1\n"
+ "# */15 * * * * spiffy start Direwolf147 >> $DIREWOLF147LOGS/failsafe.log 2>&1\n\n"
+ "# -~- Scheduled Restarts -~-\n"
+ "0 7,19 * * * spiffy restart Revelation 10m >> $REVELATIONLOGS/restarts.log 2>&1\n"
+ "0 8,14,20,2 * * * spiffy restart Enigmatica 10m >> $ENIGMATICALOGS/restarts.log 2>&1\n"
+ "0 5,9,13,17,21,1 * * * spiffy restart DDSS 10m >> $DDSSLOGS/restarts.log 2>&1\n"
+ "30 2,8,14,20 * * * spiffy restart PO3 10m >> $PO3LOGS/restarts.log 2>&1\n"
+ "30 5,9,13,17,21,1 * * * spiffy restart Eternal 10m >> $ETERNALLOGS/restarts.log 2>&1\n"
+ "30 3,11,19 * * * spiffy restart EternalVIP 10m >> $ETERNALVIPLOGS/restarts.log 2>&1\n\n\n"
+ "# -~- World Backups -~-\n"
+ "# ===== Info =====\n"
+ "# Each backup takes about 4 minutes on the larger worlds and taxes one CPU core to 100%;\n"
+ "# If multiple servers are specified in the same command, they'll be done sequentially,\n"
+ "# meaning that backing up 4 servers in one command will take about 16min total.\n"
+ "# === End Info ===\n"
+ "0,10,20,30 0,4,8,12,16,20 * * * spiffy backup PO3 >> $BACKUPLOGS/po3.log 2>&1\n"
+ "30 0,4,8,12,16,20 * * * spiffy backup DDSS >> $BACKUPLOGS/DDSS.log 2>&1\n"
+ "# 0 1,5,9,13,17,21 * * * spiffy backup Direwolf147 >> $BACKUPLOGS/Direwolf147.log 2>&1\n"
+ "30 1,5,9,13,17,21 * * *spiffy backup Revelation >> $REVELATIONLOGS/Revelation.log 2>&1\n"
+ "# 0 2,6,10,14,18,22 * * * spiffy backup Buried >> $BACKUPLOGS/buried.log 2>&1\n"
+ "30 2,6,10,14,18,22 * * * spiffy backup Enigmatica >> $BACKUPLOGS/enigmatica.log 2>&1\n"
+ "0 3,7,11,15,19,23 * * * spiffy backup Eternal >> $BACKUPLOGS/eternal.log 2>&1\n"
+ "15 1,5,9,13,17,21 * * * spiffy backup EternalVIP >> $BACKUPLOGS/eternalvip.log 2>&1\n\n"
+ "# -~- Quest Backups -~-\n"
+ "*/15 * * * * spiffy questbackup DDSS >> $BACKUPLOGS/quests.log 2>&1\n"
+ "*/15 * * * * spiffy questbackup PO3 >> $BACKUPLOGS/quests.log 2>&1\n"
+ "*/15 * * * * spiffy questbackup Enigmatica >> $BACKUPLOGS/quests.log 2>&1\n"
+ "*/15 * * * * spiffy questbackup Eternal >> $BACKUPLOGS/quests.log 2>&1\n"
+ "*/15 * * * * spiffy questbackup EternalVIP >> $BACKUPLOGS/quests.log 2>&1\n\n"
+ "# -~- Charfred_III related Jobs -~-\n"
+ "@reboot /home/minecraft/charloader.zsh\n\n"
+ "# -~- inotify watcher for betterquesting -~-\n"
+ "# @reboot screen -h 100 -dmS charredobserverI /home/minecraft/directorywatchforjinspleasure.zsh\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
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