Stringimg="[img:/4ae190d0-71b3-4122-b2a0-45a0a16c9ae1.jpg]";
我说不用正则直接substring来得更快
他又说有很多
Stringimg="[img:/4ae190d0-71b3-4122-b2a0-45a0a16c9ae5.png],[img:/4ae190d0-71b3-4122-b2a0-45a0a16c9ae5.png][img:/4ae190d0-71b3-4122-asfdb2a0-45a0a1[img:/4ae190d0-71b3-4122-b2a0-45a0a16c9ae5.png]6c9ae5.png][img:/4ae190d0-71b3-4122-b2a0-asdfas45a0a16c9ae5.png][img:/4ae190d0-71b3-4122-b2a0-45a0a16c9ae5.png]hljkfask卡累计'跌'幅%.kajd/卡,[img:/4ae190d0-71b3-4122-b2a0-45a0a16c9ae5.png]拉,三\"等\"奖其他的内容[img:/49211e5d-daeb-484d-bafe-264c5739b4f0.bmp],hljkfask卡累计跌幅卡拉,三\"等\"奖其他的内容[img:/49211e5d-daeb-484d-bafe-123456789110.jpg],";
我就斗气说也很简单啊,于是他就叫我写一个出来,于是我想了一下就写了一个
publicstaticvoidmain(String[]args){ Stringimg="[img:/4ae190d0-71b3-4122-b2a0-45a0a16c9ae5.png],"; while(img.indexOf("[")!=-1){ Stringurl=img.substring(img.indexOf("["),img.indexOf("]")+1); System.out.println(url.substring(6,url.length()-1)); img=img.replace(url,""); } }
后来他又说有问题,字符串中间还有可能有其他的东西
比如
Stringimg="[img:/4ae190d0-71b3-4122-b2a0-45[img:/4ae190d0-71b3-4122-b2a0-45a0a16c9ae5.png]a0a16c9ae5.png]";
他说还是用正则靠谱。
对于这样的情况,了解到可能存在的情况后,修改一下代码就可以了,主要也是3行代码
publicstaticvoidmain(String[]args){ Stringimg="[img:/4ae190d0-71b3-4122-b2a0-[img:/4ae1[im[img:/1123.jpg]g:/1.jpg]90d0-71b3-4122-b2a0-45a0a16c9ae1.jpg]45a0a16c9ae1.jpg]"; while(img.indexOf("[")!=-1){ Stringurl=img.substring(img.substring(0,img.indexOf("]")) .lastIndexOf("["),""); } }
他用的正则是5行 并且处理范围能力非常有限的 如果后缀名变了 或者图片名字的长度变了 或者嵌套多了 都无能为力的。
他的正则
publicstaticvoidmain(String[]args){ Stringimg="[img:/4ae190d0-71b3-4122-b2a0-[img:/4ae1[im[img:/1123.jpg]g:/1.jpg]90d0-71b3-4122-b2a0-45a0a16c9ae1.jpg]45a0a16c9ae1.jpg]"; Stringregx="[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}\\.(gif|png|jpg|jpeg|bmp)"; Patternp=Pattern.compile(regx); Matcherm=p.matcher(img); while(m.find()){ Stringurl=m.group(); System.out.println(url); } }