正则表达式中的'/'替换

近期项目对接OneNETMQTT物联网套件,需要完成命令下发流程.

流程要求:

(1)设备在接收平台下发的命令(topic$sys/{pid}/{device-name}/cmd/request/{cmdid});

(2)上传响应至$sys/{pid}/{device-name}/cmd/response/{cmdid}.

初次尝试

在项目编码中,需要对命令的topic进行正则表达式匹配,以便完成后续响应返回工作.

原正则表达式如下所示:

// 注册的命令topic为$sys/{pid}/{device-name}/cmd/#
String topicForRegex = topic.replaceAll("\\+", "[^/]+").replaceAll("#", "(.+)") + "$";

此处,使用.+替换#,以便匹配cmd/后续任意字符.

然而,匹配失败.

正则表达式修改

将正则表达式放置于https://regex101.com/进行检验,发现正则表达式存在问题.

其中右下角提示错误,需要对正则表达式中的/进行替换,修改为如下样式:

原正则表达式中,存在特殊字符/以及$,需要对其进行转义处理,即修改为\/以及\$.

因此代码修改为如下格式:

// 注册的命令topic为$sys/{pid}/{device-name}/cmd/#
if (topic.startsWith("$")) {
topic = "\\" + topic;
}
String topicForRegex = topic
.replaceAll("/", "\\\\/")
.replaceAll("\\+", "[^/]+")
.replaceAll("#", "(.+)") + "$";

此处,需要注意/字符替换,需要使用\\\\/进行(具体可参考https://stackoverflow.com/questions/13153697/how-to-replace-with-in-a-java-string).

PS:

如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!

最新文章

  1. 数据库备份并分离日志表(按月)sh 脚本
  2. 初探AngularJS
  3. 【转】MVC、MVP与MVT
  4. asp.net在线预览txt文件(简单实现)
  5. 解决Oracle在scott用户下创建视图(VIEW)权限不足的方法
  6. Golang下的Log处理
  7. selenium webdriver学习(一)
  8. PHP基础示例:商品信息管理系统v1.1[转]
  9. Linux网络编程8——对TCP与UDP的简易封装
  10. 转:移动开发中一些bug及解决方案
  11. transition Css3过度详解
  12. 依赖注入及AOP简述(十三)——AOP应用举例(完结) .
  13. HDU 4296 Buildings (YY)
  14. 数据结构《21》----2014 WAP 第一个问题----Immutable queue
  15. [HTTP] PHP 实现 HTTP Server 原理
  16. 浅谈ASP.NET配置文件加密
  17. vi 命令 行首、行尾
  18. register form
  19. Neo4j 第三篇:Cypher查询入门
  20. [PHP]Nginx与PHP的文件上传大小限制

热门文章

  1. JDOJ 1958 机器分配
  2. 2.GO-可变参数函数、匿名函数和函数变量
  3. 题解 P2668 【斗地主】
  4. [POI2014]RAJ(最短路,拓扑排序)
  5. 来吧!一文彻底搞定Vue组件!
  6. [LeetCode] 119. Pascal's Triangle II 杨辉三角之二
  7. DVWA Command Injection 通关教程
  8. Linux中Too many open files 问题分析和解决
  9. Collection和Collections有什么区别?
  10. mysql Duplicate entry '9223372036854775807' for key 'PRIMARY'