在短信转发工具TranspondSms中,实现了,单个匹配规则,像这样:
rule
那么稍微复杂点的匹配规则怎么实现?对用户友好?高度自定义?
比如这样:
((手机号 是 10086) 或者 (手机号 是 10010)) 并且 短信内容 包含 欠费
更复杂的可能好多层嵌套
想了下用正则不太好嵌套
不过这种自定义规则挺像自定义语言的,自己定义语法规则,解析执行,
网上搜了下,好多开源的语法解析库,比如这个ANTLR大家可以搜下
这里有个简明教程
我们的语法元素比较简单有:
手机号 短信内容 是 不是 包含 开头 结尾 并且 或者
然而,后面分析了下,不然手掳一版先??
直接让用户将语法规则写入文本框,比如
并且 是 手机号 等于 10086
或者 是 手机号 等于 10010
并且 是 内容 包含 欠费
我去,貌似可以
先将这段文本解析成规则树
之后复杂的语法树可以是这样:
先到这,后面再实现补充