最近我从雇主那里得到了一个新项目。他向我提供了一个包含24k行的Json文件,Json包含许多正则表达式来识别不同类型的短信。我的目标是从文件中使用正则表达式,并使用相应的正则表达式检测Android手机中的短信。
我无法弄清楚如何在我的android项目中使用每个正则表达式
基本上我想要的是识别android手机中的msg是否与我的Json文件中的正则表达式匹配。如果它匹配则它应该返回该对象的其他字段。
如果有人能帮助我,我将感激不尽。
答案 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
}
}
}
}
}