用字母图案过滤数字

时间:2017-11-10 09:08:17

标签: regex mongodb algorithm elasticsearch search

我一直致力于应用程序,该应用程序的目标是搜索具有特定数字模式的电话号码。

搜索场景位于下方。

让我们说,如果搜索模式是:

*ABCABC

那么结果应该是

91203156156
91203487487

如果搜索模式是:

*AABB

然后结果应该是:

91203851122
91203727733

我的问题是

  1. 有没有办法使用Regex与MongoDB或 弹性搜索?

  2. 实现这一目标的最佳做法是什么? 感谢。

1 个答案:

答案 0 :(得分:0)

如果我理解你,你可以通过分组实现这一目标。 例如,如果您想查找ABCABC等模式,可以搜索(.)(.)(.)\1\2\3,细分如下:

(.)(.)(.)\1\2\3

(.)                Find any character and put it in the first group
   (.)             Find any character and put it in the second group
      (.)          Find any character and put it in the third group
         \1        Match the first group, ie the first character
           \2      Match the second group
             \3    Match the third group

示例,在Python中:

>>> import re
>>> regex = re.compile(r".*(.)(.)(.)\1\2\3.*")
>>> regex.match("9120**3487487**")
<_sre.SRE_Match object; span=(0, 15), match='9120**3487487**'>