diff -r bdb3ffdd39f8 -r 99eceee5c4ac ChengsongTanPhdThesis/Chapters/RelatedWork.tex --- a/ChengsongTanPhdThesis/Chapters/RelatedWork.tex Thu Dec 08 00:19:56 2022 +0000 +++ b/ChengsongTanPhdThesis/Chapters/RelatedWork.tex Sat Dec 17 22:39:55 2022 +0000 @@ -119,17 +119,14 @@ But having the ordering relation taking regular expression as parameters causes the transitivity of their ordering to not go through. - -When a regular expression engine does not behave as intended (for example, -getting excruciatingly slow on -a relatively simple regex pattern $(a^*)^*b$ -and a string $a\ldots a$ that is obviously -not part of that regex) -programmers usually try to rewrite the regex to some equivalent form. - +When faced with catastrophic backtracking, +sometimes programmers +have to rewrite their regexes in an ad hoc fashion. +Knowing which patterns should be avoided +can be helpful. +\subsection{Static Analysis of Evil Regex Patterns} or they try to avoid the possibly problematic patterns completely, for which many false positives exist\parencite{Davis18}. -\subsection{Static Analysis of Evil Regex Patterns} Animated tools to "debug" regular expressions such as \parencite{regexploit2021} \parencite{regex101} are also popular. We are also aware of static analysis work on regular expressions that