12 comments

[ 2.3 ms ] story [ 41.2 ms ] thread
Always a worthy, related mention: https://swtch.com/~rsc/regexp/regexp1.html

Another fun idea is the opposite of the regex: the regex constructs a state machine of the needle and is then quickly able to run many haystacks through it. Sometimes you need the other optimisation: compile the entire haystack down to a state machine, and you can run many needles through it! It becomes a very primitive search index.

That link is a very high quality write up.

I’m having a hard time understanding how your “haystack compilation” would work. I get the desire to be able to efficiently run many regexes on the same large file, but how could you optimize the file for arbitrary regex matching?

January 2007

No thanks

How is the age relevant here? The article doesn't deal with current events or the newest hottest framework. It explains algorithms and abstract ideas which haven't changed in the last 15 years.
I worked briefly with Mark-Jason Dominus in 2000. He added instrumentation to the Perl regex engine so that we could develop a regex debugger for the forthcoming Komodo editor. Each time the engine advanced to process the next step, we would get a callback that included vital information such as the location in the regex string and the target string.

Today, there are numerous excellent tools like this on the web. Back in 2000, it was dark magic and so much fun to work on.

There are websites that can step through a regex execution (e.g. Regex101), but I still don't have a regex debugger with arbitrary callbacks! When do I get one in Python?
(comment deleted)
(comment deleted)
Curious if this exponentially slow regex is the reason Notepad++ crashes on loading modestly sized (10 MB) JSON?