gamue
gamue

Reputation: 161

Algorithm to get a Regex

Something like this is on my mind: I put one or a few strings in, and the algorithm shows me a matching regex.

Is there an "easy" way to do this, or does something like this already exist?

Edit 1: Yes, I'm trying to find a way to generate regex.

Edit 2: Regulazy is not what I am looking for. The common use for the code I want is to find a correct RegEx; for example, article numbers:

Upvotes: 3

Views: 538

Answers (7)

Marge
Marge

Reputation:

Look at txt2re.

This site holds a form that takes a sample string and generates a regex pattern that can match the given string.

Then it generates the corresponding script for the following languages: Perl, PHP, Python, Java, Javascript, ColdFusion, C, C++ Ruby, VB, VBScript, J#.net, C#.net, C++.net, VB.net

Upvotes: 0

Mark Cidade
Mark Cidade

Reputation: 100007

It sounds like you want an algorithm to generate a regular grammar based on some samples. In a lot of cases, there are many possible grammars for a given set of examples--there can even be infinite possible grammars. Of course, the possibilities can be limited by a second set of required non-matches, which can limit it to zero possibilities if the non-matching strings are too inclusive.

txt2re does something like this.

Upvotes: 2

hakan
hakan

Reputation: 1851

if your input strings are not random strings and they are based on some rules, by using a parser (i.e. jflex), you can create a regex generator which will generate a regex w.r.t. the given strings.

Upvotes: 0

Zsolt Botykai
Zsolt Botykai

Reputation: 51653

Perl can do it: http://www.hakank.org/makeregex/

So does ruby: http://www.toolbox-mag.de/data/makeregex.html

Note: not so perfect solution.

And there is a CLI tool: txt2regex.

There was txt2re, once upon a time...

Upvotes: 2

Carl
Carl

Reputation: 5991

I think that Regulazy by Roy Osherove does this to a certain extent, or it may be Regulator. BOth are on this page:

http://weblogs.asp.net/rosherove/pages/tools-and-frameworks-by-roy-osherove.aspx

Upvotes: 1

David Webb
David Webb

Reputation: 193714

If you have Emacs you can use regexp-opt. For example, evaluating:

(regexp-opt (list "my" "list" "of" "some" "strings" "to" "search"))

returns

"list\\|my\\|of\\|s\\(?:earch\\|ome\\|trings\\)\\|to"

Upvotes: 3

E..
E..

Reputation: 29

How about the following (matches every string)?

.*

Upvotes: 1

Related Questions