今天又不服气了

前端之家收集整理的这篇文章主要介绍了今天又不服气了前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

今天一群里的人求一正则 要提取img的图片

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],";

我就斗气说也很简单啊,于是他就叫我写一个出来,于是我想了一下就写了一个

出去不必要的代码 主要代码也就3行

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);
}
}

猜你在找的正则表达式相关文章