java 正则匹配 特殊字符 减号- 的情况,处理方式
都知道,要想匹配字符串中间,一部分的正则式为:
String str = "qwert12345yuiop";
str.matches("\\w+12345\\w+"));
或者
String str1 = "12345";
str.matches("\\w+"+ str1 +"\\w+"));
都是OK的!
但是遇到字符串中间,穿插有特殊字符时,好久GG了,下面是我自己的一种解决方案,可供参考;
String str = "instance-00000200-61ff2872-6320-4f53-9b51-1e5e9e174198-tap5fe6d0a2-03";
//检查str中间是否包含12345
String str1 = "61ff2872-6320-4f53-9b51-1e5e9e174198" ;
System.out.println(str.replace("-",""));
System.out.println(str1.replace("-",""));
System.out.println(str + ":" + str.replace("-","").matches("\\w+"+str1.replace("-","")+"\\w+")); //true
System.out.println(str1.substring(0,8));
System.out.println(str + ":" + str.matches("\\w+61ff2872-6320-4f53-9b51-1e5e9e174198\\w+")); //false
也算是一种取巧的方法,将中间的特殊字符,转换掉,正则表达式就能正常工作了,O(∩_∩)O~
String str = "qwert12345yuiop";
str.matches("\\w+12345\\w+"));
或者
String str1 = "12345";
str.matches("\\w+"+ str1 +"\\w+"));
都是OK的!
但是遇到字符串中间,穿插有特殊字符时,好久GG了,下面是我自己的一种解决方案,可供参考;
String str = "instance-00000200-61ff2872-6320-4f53-9b51-1e5e9e174198-tap5fe6d0a2-03";
//检查str中间是否包含12345
String str1 = "61ff2872-6320-4f53-9b51-1e5e9e174198" ;
System.out.println(str.replace("-",""));
System.out.println(str1.replace("-",""));
System.out.println(str + ":" + str.replace("-","").matches("\\w+"+str1.replace("-","")+"\\w+")); //true
System.out.println(str1.substring(0,8));
System.out.println(str + ":" + str.matches("\\w+61ff2872-6320-4f53-9b51-1e5e9e174198\\w+")); //false
也算是一种取巧的方法,将中间的特殊字符,转换掉,正则表达式就能正常工作了,O(∩_∩)O~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南