如何从json中提取正则表达式来解析sms(android)

时间:2017-08-08 17:56:47

标签: java android json regex sms

最近我从雇主那里得到了一个新项目。他向我提供了一个包含24k行的Json文件,Json包含许多正则表达式来识别不同类型的短信。我的目标是从文件中使用正则表达式,并使用相应的正则表达式检测Android手机中的短信。

我无法弄清楚如何在我的android项目中使用每个正则表达式

基本上我想要的是识别android手机中的msg是否与我的Json文件中的正则表达式匹配。如果它匹配则它应该返回该对象的其他字段。

如果有人能帮助我,我将感激不尽。

1 个答案:

答案 0 :(得分:2)

非常简单,真的。从json文件中的“模式”生成JSONArray。

当你走得那么远时,你只需要遍历数组中的每个对象,并从“正则表达式”中获取正则表达式。

使用Pattern和Matcher检查正则表达式的字段。

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
                    }
                }
            }
        }
    }