diff --git a/src/acl.c b/src/acl.c
index 209580a11..bef3d4ea1 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -90,7 +90,7 @@ struct acl_keyword *find_acl_kw(const char *kw)
 	struct acl_kw_list *kwl;
 
 	kwend = kw;
-	while (*kwend && *kwend != '(' && *kwend != ',')
+	while (is_idchar(*kwend))
 		kwend++;
 
 	list_for_each_entry(kwl, &acl_keywords.list, list) {
@@ -190,7 +190,8 @@ struct acl_expr *parse_acl_expr(const char **args, char **err, struct arg_list *
 		smp->arg_p = empty_arg_list;
 
 		/* look for the beginning of the subject arguments */
-		for (arg = args[0]; *arg && *arg != '(' && *arg != ','; arg++);
+		for (arg = args[0]; is_idchar(*arg); arg++)
+			;
 
 		endt = arg;
 		if (*endt == '(') {
@@ -263,7 +264,8 @@ struct acl_expr *parse_acl_expr(const char **args, char **err, struct arg_list *
 				/* none ? end of converters */
 				break;
 
-			for (endw = begw; *endw && *endw != '(' && *endw != ','; endw++);
+			for (endw = begw; is_idchar(*endw); endw++)
+				;
 
 			free(ckw);
 			ckw = my_strndup(begw, endw - begw);
diff --git a/src/sample.c b/src/sample.c
index 820fa4796..d9439fb50 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -839,7 +839,8 @@ struct sample_expr *sample_parse_expr(char **str, int *idx, const char *file, in
 	int err_arg;
 
 	begw = str[*idx];
-	for (endw = begw; *endw && *endw != '(' && *endw != ','; endw++);
+	for (endw = begw; is_idchar(*endw); endw++)
+		;
 
 	if (endw == begw) {
 		memprintf(err_msg, "missing fetch method");
@@ -949,7 +950,8 @@ struct sample_expr *sample_parse_expr(char **str, int *idx, const char *file, in
 				break;
 		}
 
-		for (endw = begw; *endw && *endw != '(' && *endw != ','; endw++);
+		for (endw = begw; is_idchar(*endw); endw++)
+			;
 
 		free(ckw);
 		ckw = my_strndup(begw, endw - begw);