找到至少有n个匹配元素的字符串

时间:2011-06-12 17:11:52

标签: regex language-theory

我有一个数字列表,我想找到至少3个... 这是一个例子

我在sql数据库中有一个大的数字列表,格式为(例如)

01-02-03-04-05-06
06-08-19-24-25-36
等等 基本上是0到99之间的6个随机数。

现在我想找到一组给定数字中至少有3个出现的字符串。 例如:

给出:01-02-03-10-11-12 返回其中至少包含3个数字的字符串。 例如

01-05-06-09-10-12 would match
03-08-10-12-18-22 would match
03-09-12-18-22-38 would not

我在想,可能会有一些算法甚至正则表达式可以匹配这个......但是我认为缺乏计算机科学教科书经验让我感到沮丧。

不 - 这不是一个功课问题!这是一个实际的应用程序!

我正在开发ruby,但任何语言答案都会受到赞赏

1 个答案:

答案 0 :(得分:3)

您可以使用字符串替换来将-替换为|,以将01-02-03-10-11-12转换为01|02|03|10|11|12。然后像这样包装:

((01|02|03|10|11|12).*){3}

这将找到任何数字对,然后忽略任意数量的字符... 3次。如果匹配,则成功。