安卓对接各种传感器,正则解析串口协议

121 阅读1分钟

前端小白做大前端集成安卓物联网设备,看公司领导都是一直 String.indexOf 看的想跳楼,换成了正则匹配的。

规则匹配

public static final String regex = "bb((..)*?)0d0a";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Observable.create((ObservableEmitter<String> emitter) -> {
    String hexString = "BB9716A33000112233445566778899001122FD6F030000010055740D0A"+
    "BB9716A33000112233445566778899001122FD6F030000010055740D0A";
    Matcher mMatcher = pattern.matcher(hexString);
    while (mMatcher.find()) {
        String hexString = mMatcher.group();
        // BB9716A33000112233445566778899001122FD6F030000010055740D0A 匹配到的每一个发到下级
        emitter.onNext(hexString);
    }
    emitter.onComplete();
})

长度匹配

public static final String regex = "aa((..){8})";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Observable.create((ObservableEmitter<String> emitter) -> {
    String hexString = "aabb060107ac6660aaaabb060107ac6660aaaabb060107ac6660aa";
    Matcher mMatcher = pattern.matcher(hexString);
    while (mMatcher.find()) {
        String hexString = mMatcher.group();
        // aabb060107ac6660aa 匹配到的每一个发到下级
        emitter.onNext(hexString);
    }
    emitter.onComplete();
})