KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
This arose from a discussion on formalizing regular expressions syntax. I've seen this behavior with several regular expression parsers, hence I tagged it language-agnostic. Take the following expression (adjust it for your favorite language): replace("input", "(.*)*", "$1") it will return an empty string. Why? More curiously even, the expression replace("input", "(.*)*", "A$1B") will return the string ABAB . Why the double empty match? Disclaimer: I know about backtracking and greedy matches, but the rules laid out by Jeffrey Friedl seem to dictate that .* matches everything and that no further backtracking or matching is done. Then why is $1 empty? Note: compare with (.+)* , which returns the input string. However, http://regexhero.com shows that there are still two matches, which seems odd for the same reasons as above.
Tags (comma-separated)
Save Edits
Cancel