From f28be8013712eec2e1db086aee97fae742945dea Mon Sep 17 00:00:00 2001 From: Adel Nizamutdinov Date: Mon, 13 Feb 2017 19:32:19 +0300 Subject: [PATCH] Problem: the regex does not get parsed on Android 4; Solution: move from named groups to indexed ones --- src/main/java/fc/cron/CronExpression.java | 30 +++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/fc/cron/CronExpression.java b/src/main/java/fc/cron/CronExpression.java index 55d16c9..2acb375 100644 --- a/src/main/java/fc/cron/CronExpression.java +++ b/src/main/java/fc/cron/CronExpression.java @@ -276,14 +276,14 @@ public class CronExpression { abstract static class BasicField { private static final Pattern CRON_FELT_REGEXP = Pattern .compile("(?: # start of group 1\n" - + " (?:(?\\*)|(?\\?)|(?L)) # globalt flag (L, ?, *)\n" - + " | (?[0-9]{1,2}|[a-z]{3,3}) # or start number or symbol\n" + + " (?:(\\*)|(\\?)|(L)) # globalt flag (L, ?, *)\n" + + " | ([0-9]{1,2}|[a-z]{3,3}) # or start number or symbol\n" + " (?: # start of group 2\n" - + " (?L|W) # modifier (L,W)\n" - + " | -(?[0-9]{1,2}|[a-z]{3,3}) # or end nummer or symbol (in range)\n" + + " (L|W) # modifier (L,W)\n" + + " | -([0-9]{1,2}|[a-z]{3,3}) # or end nummer or symbol (in range)\n" + " )? # end of group 2\n" + ") # end of group 1\n" - + "(?:(?/|\\#)(?[0-9]{1,7}))? # increment and increment modifier (/ or \\#)\n" + + "(?:(/|\\#)([0-9]{1,7}))? # increment and increment modifier (/ or \\#)\n" , Pattern.CASE_INSENSITIVE | Pattern.COMMENTS); final CronFieldType fieldType; @@ -301,11 +301,11 @@ public class CronExpression { if (!m.matches()) { throw new IllegalArgumentException("Invalid cron field '" + rangePart + "' for field [" + fieldType + "]"); } - String startNummer = m.group("start"); - String modifier = m.group("mod"); - String sluttNummer = m.group("end"); - String inkrementModifier = m.group("inkmod"); - String inkrement = m.group("ink"); + String startNummer = m.group(4); + String modifier = m.group(5); + String sluttNummer = m.group(6); + String inkrementModifier = m.group(7); + String inkrement = m.group(8); FieldPart part = new FieldPart(); part.increment = 999; @@ -320,14 +320,14 @@ public class CronExpression { } else { part.to = part.from; } - } else if (m.group("all") != null) { + } else if (m.group(1) != null) { part.from = fieldType.from; part.to = fieldType.to; part.increment = 1; - } else if (m.group("ignorer") != null) { - part.modifier = m.group("ignorer"); - } else if (m.group("last") != null) { - part.modifier = m.group("last"); + } else if (m.group(2) != null) { + part.modifier = m.group(2); + } else if (m.group(3) != null) { + part.modifier = m.group(3); } else { throw new IllegalArgumentException("Invalid cron part: " + rangePart); }