diff --git a/examples/keymatch5_model.conf b/examples/keymatch5_model.conf
new file mode 100644
index 0000000..cec28e6
--- /dev/null
+++ b/examples/keymatch5_model.conf
@@ -0,0 +1,11 @@
+[request_definition]
+r = sub, obj, act
+
+[policy_definition]
+p = sub, obj, act
+
+[policy_effect]
+e = some(where (p.eft == allow))
+
+[matchers]
+m = r.sub == p.sub && keyMatch5(r.obj, p.obj) && regexMatch(r.act, p.act)
\ No newline at end of file
diff --git a/examples/keymatch5_policy.csv b/examples/keymatch5_policy.csv
new file mode 100644
index 0000000..456a4f0
--- /dev/null
+++ b/examples/keymatch5_policy.csv
@@ -0,0 +1,2 @@
+p, alice, /alice_data/{resource}/.*, GET
+p, alice, /alice_data2/{id}/using/{resId}/.*, GET
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index efb4dde..aaeb6c6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
org.casbin
jcasbin
- 1.55.0
+ 1.79.0
diff --git a/src/test/java/org/casbin/ClientTest.java b/src/test/java/org/casbin/ClientTest.java
index 11803a5..751b027 100644
--- a/src/test/java/org/casbin/ClientTest.java
+++ b/src/test/java/org/casbin/ClientTest.java
@@ -324,4 +324,10 @@ public void testABACRule() {
assertEquals(Client.run(new String[]{"enforce", "-m", "examples/abac_rule_model.conf", "-p", "examples/abac_rule_policy.csv", "{Age: 30}", "/data1", "read"}), "{\"allow\":true,\"explain\":null}");
assertEquals(Client.run(new String[]{"enforceEx", "-m", "examples/abac_rule_model.conf", "-p", "examples/abac_rule_policy.csv", "{Age: 30}", "/data1", "read"}), "{\"allow\":true,\"explain\":[\"r.sub.Age > 18 && r.sub.Age < 60\",\"/data1\",\"read\"]}");
}
+
+ @Test
+ public void testKeyMatch5() {
+ assertEquals(Client.run(new String[]{"enforceEx", "-m", "examples/keymatch5_model.conf", "-p", "examples/keymatch5_policy.csv", "alice", "/alice_data/hello/123", "GET"}), "{\"allow\":true,\"explain\":[\"alice\",\"/alice_data/{resource}/.*\",\"GET\"]}");
+ assertEquals(Client.run(new String[]{"enforceEx", "-m", "examples/keymatch5_model.conf", "-p", "examples/keymatch5_policy.csv", "alice", "/alice_data/hello/123", "POST"}), "{\"allow\":false,\"explain\":[]}");
+ }
}