Abstract
Writing a regular expression that exactly captures a set of desired strings is difficult, since regular expressions provide
a compact syntax that makes it difficult to easily understand their meaning. Testing is widely used to validate regular expressions.
Indeed, although a developer could have problems in writing the correct regular expression, (s)he can easily assess whether
a string should be accepted or not. Starting from this observation, we propose an iterative mutation-based process that is
able to test and repair a faulty regular expression. The approach consists in generating strings S that distinguish a regular
expression r from its mutants, asking the user to assess the correct evaluation of S, and possibly substituting r with a mutant
r' that evaluates S more correctly than r; we propose four variants of the approach which differ in the policy they employ
to judge whether r' is better than r. Experiments show that the proposed approach is able to actually repair faulty regular
expressions with a reasonable user’s effort.
[download the pdf file] [DOI]