On the Semantics of Atomic Subgroups in Practical Regular Expressions
Most regular expression matching engines have operators and features to enhance the succinctness of classical regular expressions, such as interval quantifiers and regular lookahead. In addition, matching engines in for example Perl, Java, Ruby and .NET, also provide operators, such as atomic operators, that constrain the backtracking behavior of the engine. The most common use is to prevent needless backtracking, but the operators will often also change the language accepted. As such it is essential to develop a theoretical sound basis for the matching semantics of regular expressions with atomic operators. We here establish that atomic operators preserve regularity, but are exponentially more succinct for some languages. Further we investigate the state complexity of deterministic and non-deterministic finite automata accepting the language corresponding to a regular expression with atomic operators, and show that emptiness testing is PSPACE-complete.
KeywordsRegular Expression Regular Language Finite Automaton Input String Matching Semantic
- [Aho90]Aho, A.: Algorithms for finding patterns in strings. In: van Leeuwen, J. (ed.) Handbook of Theoretical Computer Science, vol. A, pp. 255–300. MIT Press (1990)Google Scholar
- [BvdM16]Berglund, M., van der Merwe, B.: On the semantics of regular expression parsing in the wild. Theor. Comput. Sci. (2016). doi: 10.1016/j.tcs.2016.09.006
- [Fri97]Friedl, J.: Mastering regular expressions, 1st edn. O’Reilly & Associates Inc. (1997)Google Scholar
- [Reg]RegexAdvice.com. Regular expression library. http://regexlib.com. Accessed 9 Jan 2017
- [WvdMBW16]Weideman, N., van der Merwe, B., Berglund, M., Watson, B.: Analyzing matching time behavior of backtracking regular expression matchers by using ambiguity of NFA. In: Han, Y.-S., Salomaa, K. (eds.) CIAA 2016. LNCS, vol. 9705, pp. 322–334. Springer, Cham (2016). doi: 10.1007/978-3-319-40946-7_27 CrossRefGoogle Scholar