moodmosaic / Fare

Port of Java dk.brics.automaton and xeger, mostly used for generating strings that match a specific regular expression.
http://www.brics.dk/automaton/
MIT License
182 stars 43 forks source link

Issue with expression #23

Open sprotty opened 7 years ago

sprotty commented 7 years ago

The following regex comes from the chrome-manifest.json

When used with the following code it throws an exception (argument all_urls not found). I'm no regex expert, but other online parsers validate it, so I assume its valid....

Fare.Xeger sut = new Fare.Xeger(regexString);
string result = sut.Generate();

^((\*|http|https|file|ftp|chrome-extension):\/\/(\*|\*\.[^\/\*]+|[^\/\*]+)?(\/.*))|<all_urls>$

Fare is a great piece of software and works on most test cases, thanks for all the effort.

moodmosaic commented 7 years ago

Thank you for reporting this!

Project Fare turns Regular Expressions into Automatons by applying the algorithms of dk.brics.automaton and xeger.

Unfortunately, I don't have an answer to your question, as Project Fare is really a port of the above Java projects. – We'd have to try

^((\*|http|https|file|ftp|chrome-extension):\/\/(\*|\*\.[^\/\*]+|[^\/\*]+)?(\/.*))|<all_urls>$

in Java and compare the results.

You may use a different pattern or use a different engine to reverse the Regular Expression into an Automaton. As an example, you can use the Rex engine.