pppscn / SmsForwarder

短信转发器——监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机:钉钉群自定义机器人、钉钉企业内机器人、企业微信群机器人、飞书机器人、企业微信应用消息、邮箱、bark、webhook、Telegram机器人、Server酱、PushPlus、手机短信等。包括主动控制服务端与客户端,让你轻松远程发短信、查短信、查通话、查话簿、查电量等。(V3.0 新增)PS.这个APK主要是学习与自用,如有BUG请提ISSUE,同时欢迎大家提PR指正

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Suggestion]: 关于快递取件码信息的提取

kyeo-hub opened this issue · comments

commented

是否有人曾提过类似的问题?

否(No)

你觉得APP有什么不足之处?

我一直在尝试对快递取件信息进行提取,但是wiki里面只说了正则替换,我通过正则表达式对快递取件信息进行了匹配,但是我不知道如何自定义出来我想要的快递取件信息。取件短信如下:

【圆通快递】请凭1-4-4230到尚璟瑞府妈妈驿站领取运单尾号6017包裹,详询13726410547。
【菜鸟驿站】您的中通快递包裹已到武汉市尚璟瑞府11栋101门店,请20:30前凭10-2-7507取件,详询17612731639
【妈妈驿站】取货码2-2-1521,您有极兔快递包裹,已到尚璟瑞府21栋104号门面,询13726410547

我想转发的内容为:XX驿站-取件码-XX快递
但是目前的正则替换规则,我不懂该怎么保留我要提取的内容。

你觉得该怎么去完善会比较好?【非必答】

或许启用正则替换内容能加个正则提取变量以便放到自定义模板中?还是其他的方法。

实在写不出一条通吃的正则表达式,难道就不能分步进行吗?

工具是死的,人是活的啊,只要**不滑坡,办法总比困难多!

【注意】以下仅供思路参考,不保证正则表达式严谨,不保证能适配各种各样的短信格式,请自行根据实际情况微调:

第1次正则替换:

(.*)(.{2}驿站)(.*)===$2#$1$2$3

得到

妈妈驿站#【圆通快递】请凭1-4-4230到尚璟瑞府妈妈驿站领取运单尾号6017包裹,详询13726410547。
菜鸟驿站#【菜鸟驿站】您的中通快递包裹已到武汉市尚璟瑞府11栋101门店,请20:30前凭10-2-7507取件,详询17612731639
妈妈驿站#【妈妈驿站】取货码2-2-1521,您有极兔快递包裹,已到尚璟瑞府21栋104号门面,询13726410547

第2次正则替换:

(.+)#(.*)(\d+-\d+-\d+)(.*)===$1#$3#$2$3$4

得到

妈妈驿站#1-4-4230#【圆通快递】请凭1-4-4230到尚璟瑞府妈妈驿站领取运单尾号6017包裹,详询13726410547。
菜鸟驿站#0-2-7507#【菜鸟驿站】您的中通快递包裹已到武汉市尚璟瑞府11栋101门店,请20:30前凭10-2-7507取件,详询17612731639
妈妈驿站#2-2-1521#【妈妈驿站】取货码2-2-1521,您有极兔快递包裹,已到尚璟瑞府21栋104号门面,询13726410547

第3次正则替换:

(.+)#(.+)#(.*)(.{2}快递)(.*)===$1-$2-$4

得到

妈妈驿站-1-4-4230-圆通快递
菜鸟驿站-0-2-7507-中通快递
妈妈驿站-2-2-1521-极兔快递

PS. 正则替换允许填写多条,具体参看 Wiki常见问题

commented

实在写不出一条通吃的正则表达式,难道就不能分步进行吗?

工具是死的,人是活的啊,只要**不滑坡,办法总比困难多!

【注意】以下仅供思路参考,不保证正则表达式严谨,不保证能适配各种各样的短信格式,请自行根据实际情况微调:

第1次正则替换:

(.*)(.{2}驿站)(.*)===$2#$1$2$3

得到

妈妈驿站#【圆通快递】请凭1-4-4230到尚璟瑞府妈妈驿站领取运单尾号6017包裹,详询13726410547。
菜鸟驿站#【菜鸟驿站】您的中通快递包裹已到武汉市尚璟瑞府11栋101门店,请20:30前凭10-2-7507取件,详询17612731639
妈妈驿站#【妈妈驿站】取货码2-2-1521,您有极兔快递包裹,已到尚璟瑞府21栋104号门面,询13726410547

第2次正则替换:

(.+)#(.*)(\d+-\d+-\d+)(.*)===$1#$3#$2$3$4

得到

妈妈驿站#1-4-4230#【圆通快递】请凭1-4-4230到尚璟瑞府妈妈驿站领取运单尾号6017包裹,详询13726410547。
菜鸟驿站#0-2-7507#【菜鸟驿站】您的中通快递包裹已到武汉市尚璟瑞府11栋101门店,请20:30前凭10-2-7507取件,详询17612731639
妈妈驿站#2-2-1521#【妈妈驿站】取货码2-2-1521,您有极兔快递包裹,已到尚璟瑞府21栋104号门面,询13726410547

第3次正则替换:

(.+)#(.+)#(.*)(.{2}快递)(.*)===$1-$2-$4

得到

妈妈驿站-1-4-4230-圆通快递
菜鸟驿站-0-2-7507-中通快递
妈妈驿站-2-2-1521-极兔快递

PS. 正则替换允许填写多条,具体参看 Wiki常见问题

感谢您的回答,我下午没看,一直在研究从接收端来是用Python脚本提取,甚至准备中间做个中专webhook服务器来提取之后转发到接收端。晚上回来看到您的信息,感觉干货满满,立即试验了一下。发现一个小问题:

【菜鸟驿站】您的中通快递包裹已到武汉市尚璟瑞府11栋101门店,请20:30前凭10-2-7507取件,详询17612731639

这条信息中的收件码是用正则规则后,会变成0-2-7507,我不知道是哪里出了BUG。

感谢您的回答,我下午没看,一直在研究从接收端来是用Python脚本提取,甚至准备中间做个中专webhook服务器来提取之后转发到接收端。晚上回来看到您的信息,感觉干货满满,立即试验了一下。发现一个小问题:

【菜鸟驿站】您的中通快递包裹已到武汉市尚璟瑞府11栋101门店,请20:30前凭10-2-7507取件,详询17612731639

这条信息中的收件码是用正则规则后,会变成0-2-7507,我不知道是哪里出了BUG。

将第二次替换的正则表达式优化一下,再试试

(.+)#(.*?)(\d+-\d+-\d+)(.*)===$1#$3#$2$3$4

PS. 这就是所谓的 正则的贪婪与非贪婪模式,所以一开始就说了,仅供思路参考,正则要你自己去写

commented

说实话自己这方面的知识确实不足。
感谢你的付出与启示,已打赏10元,尽我绵薄之力,心怀感激!