diff --git a/pom.xml b/pom.xml
index 465c9ad..183a689 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,7 @@
3.1
2.2.2
- 1.6
+ 1.7
@@ -78,12 +78,12 @@
test
-
+
org.apache.commons
diff --git a/src/main/java/oi/thekraken/grok/api/Discovery.java b/src/main/java/oi/thekraken/grok/api/Discovery.java
index dbc3e52..26e00b8 100644
--- a/src/main/java/oi/thekraken/grok/api/Discovery.java
+++ b/src/main/java/oi/thekraken/grok/api/Discovery.java
@@ -24,12 +24,11 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
-import com.google.code.regexp.Matcher;
-import com.google.code.regexp.Pattern;
-
import oi.thekraken.grok.api.exception.GrokException;
/**
diff --git a/src/main/java/oi/thekraken/grok/api/Grok.java b/src/main/java/oi/thekraken/grok/api/Grok.java
index 8e67c91..99df791 100644
--- a/src/main/java/oi/thekraken/grok/api/Grok.java
+++ b/src/main/java/oi/thekraken/grok/api/Grok.java
@@ -26,13 +26,14 @@
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.code.regexp.Matcher;
-import com.google.code.regexp.Pattern;
import oi.thekraken.grok.api.exception.GrokException;
@@ -359,10 +360,10 @@ public void compile(String pattern, boolean namedOnly) throws GrokException {
Matcher m = GrokUtils.GROK_PATTERN.matcher(namedRegex);
// Match %{Foo:bar} -> pattern name and subname
- // Match %{Foo=regex} -> add new regex definition
+ // Match %{Foo=regex} -> add new regex definition
if (m.find()) {
continueIteration = true;
- Map group = m.namedGroups();
+ Map group = GrokUtils.namedGroups(m, m.group());
if (group.get("definition") != null) {
try {
addPattern(group.get("pattern"), group.get("definition"));
diff --git a/src/main/java/oi/thekraken/grok/api/GrokUtils.java b/src/main/java/oi/thekraken/grok/api/GrokUtils.java
index 228dc9a..97c2d44 100644
--- a/src/main/java/oi/thekraken/grok/api/GrokUtils.java
+++ b/src/main/java/oi/thekraken/grok/api/GrokUtils.java
@@ -1,6 +1,12 @@
package oi.thekraken.grok.api;
-import com.google.code.regexp.Pattern;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* {@code GrokUtils} contain set of useful tools or methods.
@@ -26,5 +32,30 @@ public class GrokUtils {
")" +
")?" +
"\\}");
+
+ public static final Pattern NAMED_REGEX = Pattern
+ .compile("\\(\\?<([a-zA-Z][a-zA-Z0-9]*)>");
+
+ private static Set getNameGroups(String regex) {
+ Set namedGroups = new LinkedHashSet();
+ Matcher m = NAMED_REGEX.matcher(regex);
+ while (m.find()) {
+ namedGroups.add(m.group(1));
+ }
+ return namedGroups;
+ }
+ public static Map namedGroups(Matcher matcher,
+ String namedRegex) {
+ Set groupNames = getNameGroups(matcher.pattern().pattern());
+ Matcher localMatcher = matcher.pattern().matcher(namedRegex);
+ Map namedGroups = new LinkedHashMap();
+ if (localMatcher.find()) {
+ for (String groupName : groupNames) {
+ String groupValue = localMatcher.group(groupName);
+ namedGroups.put(groupName, groupValue);
+ }
+ }
+ return namedGroups;
+ }
}
diff --git a/src/main/java/oi/thekraken/grok/api/Match.java b/src/main/java/oi/thekraken/grok/api/Match.java
index 167c2a2..e21a6ea 100644
--- a/src/main/java/oi/thekraken/grok/api/Match.java
+++ b/src/main/java/oi/thekraken/grok/api/Match.java
@@ -20,8 +20,8 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
+import java.util.regex.Matcher;
-import com.google.code.regexp.Matcher;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -149,7 +149,7 @@ public void captures() {
// _capture.put("LINE", this.line);
// _capture.put("LENGTH", this.line.length() +"");
- Map mappedw = this.match.namedGroups();
+ Map mappedw = GrokUtils.namedGroups(this.match,this.subject);
Iterator> it = mappedw.entrySet().iterator();
while (it.hasNext()) {