What's is RegexEngine? RegexEngine is an open source Web Application built on the FormalTheory library (PHP) that allows for lexing, manipulation, optimization and rendering of Regular Expressions (or regex). In addition to the manipulation of regex it can transform any arbitrary regex to and from a Finite Automata. This allows for even more transformations of expression such as negation, union, intersection, counting solutions, etc. This combination of tools can be very useful in solving many regex related problems such as: find an inverse of a regex, proving two regexes have no overlapping solutions, finding a simpler equivalent regex, visualizing the DFA of a regex, proving two different regex are equivalent and many more.

How do I get started? Create a source by selecting a type from the "Source" dropdown. This node can be dragged around by clicking on the gray part of the box, position the box somewhere on the screen. Next create an output from the "Output" dropdown and position it to the right of the source. Click and drag from the blue dot on the source to the green dot on the Output. Depending on which source you selected you might need to configure it by typing a regex. You're Done!

Why won't my regex graph? We use Google's Graphviz API which has a limited number of nodes and request length. You can often reduce the complexity of graph by removing all references to . and replacing them with a more specific set. For example ^10.*01$ -> ^10[01]*01$ .

Why is my Text Output needlessly complex? The transformation from a DFA to a Regular Expression isn't clean. Depending on the interconnections between states in the DFA the outputted regex can increase exponentially in size and often requires complex optimizations to reduce it back down to a reasonably-sized equivalent regex.

How can I delete a wire once I've created it? Left click on the wire.

How can I delete a node once I've created it? Right click on the node and select "delete".