支持正则匹配规则

This commit is contained in:
pppscn 2021-03-11 23:22:25 +08:00
parent 2801b0983a
commit 01072e9086
4 changed files with 46 additions and 1 deletions

View File

@ -53,7 +53,7 @@ Android手机监听短信并根据指定规则转发到其他手机钉钉机
- [x] 支持双卡手机,增加卡槽标识/运营商/手机号(如果能获取的话)
- [x] 支持多重匹配规则
- [x] 支持标注卡槽号码(优先使用)、设备信息;自定义转发信息模版
- [ ] 支持正则匹配规则
- [x] 支持正则匹配规则
- [x] 支持卡槽匹配规则
- [ ] 转发规则、发送方配置导出与导入

View File

@ -8,6 +8,8 @@ import com.idormy.sms.forwarder.utils.RuleLineUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class RuleModel {
public static final String FILED_TRANSPOND_ALL = "transpond_all";
@ -20,6 +22,7 @@ public class RuleModel {
public static final String CHECK_START_WITH = "startwith";
public static final String CHECK_END_WITH = "endwith";
public static final String CHECK_NOT_IS = "notis";
public static final String CHECK_REGEX = "regex";
public static final Map<String, String> CHECK_MAP = new HashMap<String, String>();
public static final String CHECK_SIM_SLOT_ALL = "ALL";
public static final String CHECK_SIM_SLOT_1 = "SIM1";
@ -87,6 +90,8 @@ public class RuleModel {
return CHECK_START_WITH;
case R.id.btnEndWith:
return CHECK_END_WITH;
case R.id.btnRegex:
return CHECK_REGEX;
case R.id.btnNotIs:
return CHECK_NOT_IS;
default:
@ -161,6 +166,20 @@ public class RuleModel {
checked = msgValue.endsWith(this.value);
}
break;
case CHECK_REGEX:
if (msgValue != null) {
try {
checked = Pattern.matches(this.value, msgValue);
} catch (PatternSyntaxException e) {
checked = false;
Log.d(TAG, "PatternSyntaxException: ");
Log.d(TAG, "Description: " + e.getDescription());
Log.d(TAG, "Index: " + e.getIndex());
Log.d(TAG, "Message: " + e.getMessage());
Log.d(TAG, "Pattern: " + e.getPattern());
}
}
break;
default:
break;
}
@ -207,6 +226,8 @@ public class RuleModel {
return R.id.btnStartWith;
case CHECK_END_WITH:
return R.id.btnEndWith;
case CHECK_REGEX:
return R.id.btnRegex;
case CHECK_NOT_IS:
return R.id.btnNotIs;
default:

View File

@ -7,6 +7,8 @@ import com.idormy.sms.forwarder.model.vo.SmsVo;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
class RuleLine {
public static final String CONJUNCTION_AND = "并且";
@ -19,6 +21,7 @@ class RuleLine {
public static final String CHECK_CONTAIN = "包含";
public static final String CHECK_START_WITH = "开头";
public static final String CHECK_END_WITH = "结尾";
public static final String CHECK_REGEX = "正则";
public static List<String> CONJUNCTION_LIST = new ArrayList<String>();
public static List<String> FILED_LIST = new ArrayList<String>();
public static List<String> SURE_LIST = new ArrayList<String>();
@ -315,6 +318,20 @@ class RuleLine {
checked = msgValue.endsWith(this.value);
}
break;
case CHECK_REGEX:
if (msgValue != null) {
try {
checked = Pattern.matches(this.value, msgValue);
} catch (PatternSyntaxException e) {
checked = false;
logg("PatternSyntaxException: ");
logg("Description: " + e.getDescription());
logg("Index: " + e.getIndex());
logg("Message: " + e.getMessage());
logg("Pattern: " + e.getPattern());
}
}
break;
default:
break;
}

View File

@ -164,6 +164,13 @@
android:text="结尾"
android:textSize="13sp" />
<RadioButton
android:id="@+id/btnRegex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="正则"
android:textSize="13sp" />
</RadioGroup>
</LinearLayout>