2017-08-08 7 views
0

最近、私は雇用主から新しいプロジェクトを手に入れました。彼は私にJsonファイルを提供しました.Jsonファイルには24k行が含まれていました.Jsonにはさまざまなタイプのsmを識別するための多くの正規表現が含まれています。私の目標はファイルからの正規表現を使用して、それぞれの正規表現を使ってアンドロイド携帯電話のSMSを検出することです。jsonから正規表現を抽出してsms(android)を解析する方法

私はそれぞれを使用して、私のアンドロイドプロジェクト

内のすべての正規表現は基本的に私が何をしたいのアンドロイド携帯電話でのMSGは私のJSONファイルで正規表現に一致するかどうかを識別することである。できる方法を見つけ出すことができませんよ一致する場合は、そのオブジェクトの他のフィールドを返す必要があります。

誰かが私をここで助けてくれたら大変感謝しています。

+1

私は、インターネット上でそのJSONを掲載再考するでしょう。 – tima

+0

[関連] *コードを含めるには、[mcve]と[edit]を読んでください。あなたのリンクには専有情報があるかどうかに注意してください。投稿されてはならないことがあれば、あなたの質問にフラグを立ててリンクのリビジョンを削除するようリクエストすることができます。 – whrrgarbl

答えて

1

かなり簡単です。 jsonファイルの "patterns"からJSONArrayを生成します。

これまでのところ、配列の各オブジェクトをループし、正規表現から正規表現を取得するだけで済みます。

パターンとマッチャーを使用して、フィールドを正規表現と照合します。

Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher(my_string); 
if (matcher.find()) { 
    // you found a match 
} 

その後、何でもできます。明確にするため

編集:

if (!my_json_object_from_file.isNull("rules")) { 
     JSONArray rules_array = my_json_object_from_file.getJSONArray("rules"); 
     for (JSONObject rule_object : rules_array) { 
      if (!rule_object.isNull("name")) { 
       // you have a name for the rule 
      } 
      if (!rule_object.isNull("patterns")) { 
       // you have some patterns 
       JSONArray pattern_array = rule_object.getJSONArray("patterns"); 
       for (JSONObject pattern_object : pattern_array) { 
        // these are your pattern objects 
        if (!pattern_object.isNull("regex")) { 
         String regex = pattern_object.getString("regex"); 
         // do work with the regex 
        } 
       } 
      } 
     } 
    } 
+0

返信いただきありがとうございます。上記のコードを使用してJSONから正規表現を取得することができます(デバッガを使用して値を見ることができます)。しかし、ファイルが大きすぎると、永久に(実際にはロードされずに)デバイスにロードすることができます。私はAsynctaskを使ってみましたが、それはトリックを行うようには見えません。 Pは、noobの質問を申し訳なく思って、私はアンドロイド開発の初心者です。 –

+0

これを処理する方法の優れた例がここにあります:http://www.acuriousanimal.com/2015/10/23/reading-json-file-in-stream-mode-with-gson.html – anomeric

関連する問題