- Non-greedy repetition (
*?
,+?
) - Subexpression calls
- Assertions (lookahead/lookbehind)
- Anchors
- Character property inversion
- Character set inversion
- Character set composition
- Case-insensitive mode
- Multi-line mode
- Free-spacing mode
- Capturing
- DFA minimization
- NFA with lazy DFA transformation
- Recheck algorithm for finding ReDoS vulnerabilities
- Much more documentation
- A Closer Look at TDFA
- NFAs with Tagged Transitions, their Conversion to Deterministic Automata and Application to Regular Expressions (2000)
- Static Detection of DoS Vulnerabilities in Programs that use Regular Expressions (2017)
- On the Impact and Defeat of Regular Expression Denial of Service (2020)
- Russ Cox series
- A DFA for submatch extraction
- Compiling Nondeterministic Transducers to Deterministic Streaming Transducers
- Translating Regular Expression Matching into Transducers
- DFA minimization
- NFA minimization
- Lazy DFAs
- TruffleRuby regexp analyzer
- Practical Experience with TRegex and Ruby
- Optimizing based on source encoding in graal
- Regular Expressions, Text Normalization, Edit Distance