gpointer ud;
gint flags;
gint ncaptures;
+ gint nbackref;
};
struct rspamd_regexp_cache {
res->ncaptures = ncaptures;
}
+ /* Check number of backrefs */
+ if (pcre_fullinfo (res->raw_re, res->extra, PCRE_INFO_BACKREFMAX,
+ &ncaptures) == 0) {
+ res->nbackref = ncaptures;
+ }
+
return res;
}
return re->pattern;
}
+gint
+rspamd_regexp_get_nbackrefs (rspamd_regexp_t *re)
+{
+ g_assert (re != NULL);
+
+ return re->nbackref;
+}
+
+gint
+rspamd_regexp_get_ncaptures (rspamd_regexp_t *re)
+{
+ g_assert (re != NULL);
+
+ return re->ncaptures;
+}
+
gboolean
rspamd_regexp_match (rspamd_regexp_t *re, const gchar *text, gsize len,
gboolean raw)
*/
const char* rspamd_regexp_get_pattern (rspamd_regexp_t *re);
+/**
+ * Returns number of backreferences in a regexp
+ */
+gint rspamd_regexp_get_nbackrefs (rspamd_regexp_t *re);
+
+/**
+ * Returns number of capture groups in a regexp
+ */
+gint rspamd_regexp_get_ncaptures (rspamd_regexp_t *re);
+
/**
* Create new regexp cache
* @return