diff --git a/src/lib-sieve/plugins/regex/mcht-regex.c b/src/lib-sieve/plugins/regex/mcht-regex.c
index 7707c92e3d420ee49206dfda416988a5de72092e..54685adcc60400bdf0ab1b030e424d7e9f0c6113 100644
--- a/src/lib-sieve/plugins/regex/mcht-regex.c
+++ b/src/lib-sieve/plugins/regex/mcht-regex.c
@@ -268,8 +268,10 @@ static int mcht_regex_match
 				str_truncate(subst, 0);
 			
 				if ( ctx->pmatch[i].rm_so != -1 ) {
-					if ( skipped > 0 )
+					if ( skipped > 0 ) {
 						sieve_match_values_skip(mvalues, skipped);
+						skipped = 0;
+					}
 					
 					str_append_n(subst, val + ctx->pmatch[i].rm_so, 
 						ctx->pmatch[i].rm_eo - ctx->pmatch[i].rm_so);