计算机是否可以通过用户提供的示例"学习"正则表达式?
澄清:
可能吗?我可以使用Google的算法,关键字等吗?
编辑:谢谢你的答案,但我对提供此功能的工具不感兴趣.我正在寻找理论信息,如论文,教程,源代码,算法名称,所以我可以为自己创造一些东西.
我想输入一个字符串并返回一个可用于描述字符串结构的正则表达式.正则表达式将用于查找与第一个相同结构的更多字符串.
这是故意模棱两可的,因为我肯定会错过SO社区中的某个人会抓住的案例.
请发布任何和所有可能的方法来执行此操作.
用于从一组被认为是由通用语法生成的示例中进行常规或上下文无关语法推理的最佳(或任何)开源库是什么?我更喜欢 Java、Python 或 Ruby 的优秀库,但乞丐当然不能挑剔。
我做了一些谷歌搜索,但找不到任何实际的实现,尽管我确实找到了很多有趣的参考资料。 这个库看起来很有趣,但我找不到可以在任何地方下载的地方。
编辑(2011-11-14):为了清楚起见(虽然我不确定你们是如何误解的),问题是关于语法推理,而不是语法生成或解析。换句话说,给定一组符合未知语法的字符串,找到它们都满足的最严格的语法。
我找到了几个在线工具,可以让我看到我在示例文本上创建的正则表达式的效果,但我正在寻找一种工具,可以根据所选文本的一部分来制作表达式建议.
例如:
假设我有一个像这样的字符串,
obssoCookie=set-usermember1-404343994;Version=1;Path=/;Domain=10.118.195.239;Discard
我希望obssoCookie=在第一个之间提取所有内容,;   我想要一个工具,这个工具可以让我选择文本的那一部分并用建议的正则表达式进行响应.
我从科学文献中提取了一系列表格,这些表格由列组成,每列都是不同的类型.这是一个例子
我希望能够为每列自动生成正则表达式.显然有一些简单的解决方案,.*所以我会添加他们只使用的约束:
[A-Z] [a-z] [0-9]',','''){3,4}上表的"最佳"答案是:
 [A-Z]{3}
 [A-Za-z\s\.]+
 \d{4}\sm
 \d{2}\u00b0\d{2}'\d{2}"N,\d{2}\u00b0\d{2}'\d{2}"E
 (speciosissima|intermediate|troglodytes)
 (hf|sr)
 \d{4}
当然,如果我们移出地理区域,第四个正则表达式会破裂,但软件不知道这一点.目的是收集许多正则表达式,比如说"坐标"并概括它们,可能是部分手动的.仅当存在少量不同的字符串时才会创建枚举.
我很感激能够做到这一点的(特别是F/OSS)软件的例子,特别是在Java中.(它类似于Google的Refine).我4年前就知道这个问题了,但这并没有真正回答问题和text2re网站似乎是互动的.
注意:我注意到投票结束为"过于本地化".这是一个非常普遍的问题(给出的表只是一个例子),正如Google/Freebase开发的Refine解决这个问题所示.它可能涉及各种各样的表格(例如财务,新闻等).这是一个浮点值:

自动确定某些权威机构报告实际年龄(例如,不是几个月,几天)并使用2位数的精确度将是有用的.