2017-11-10 4 views
-2

私はアプリケーションを作成していますが、アプリケーションの目的は、特定のパターンの番号で電話番号を検索することです。アルファベットパターンのフィルタ番号

検索シナリオは下にあります。

検索パターンがある場合、のは、言ってみましょう:

*ABCABC 

そして、その結果、検索パターンがある場合

91203156156 
91203487487 

次のようになります。

*AABB

、結果は次のようになります。

91203851122 
91203727733 

私の質問は

  1. はMongoDBのか 弾性検索で正規表現を使用して、これを達成するためにどのような方法がありますか?

  2. これを達成するためのベストプラクティスは何ですか?おかげさまで

+0

正規表現がたくさんありますクエリ、正規表現クエリ、ワイルドカードクエリ、プレフィックスクエリ、ファジークエリ最初にドキュメントを読んでから具体的な質問をしてください。 – Lupanoide

答えて

0

私はあなたが正しいと分かっていれば、これをグループ化することで達成できます。次のように分解 あなたはABCABCのようなパターンを検索する場合たとえば、あなたが(.)(.)(.)\1\2\3を検索することができ、:Pythonで

(.)(.)(.)\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 

例、:elasticsearchで

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

あなたの返事をありがとうございます。しかし、検索シナリオはABCABCに限られていません。パターンの可能性に制限はありません。 \ * ABCDEFG(最後の7桁は連続番号です)、AB \ * AB(最初の2桁と最後の2桁は同じにする必要があります)などがあります。 –

関連する問題