栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java通过正则表达式提取字符串中的某一段字符串

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java通过正则表达式提取字符串中的某一段字符串

​ 我们在编写程序中免不了要涉及到通过正则表达式找到该字符串中有用的一部分。

​ 那么既然可以通过正则表达式找到这一段字符串,可不可以再将这一段字符串给提取出来呢?答案是可以的。

​ 我们需要怎么去提取所匹配当前正则表达式的字符串呢?

​ 我们可以去使用jdk自带的工具类完成此操作,当然我们得模拟一个使用的场景来完成此次测试。

使用场景:使用阿里云的oss将图片上传之后,我们需要从oss中删除该图片,就必须得用到图片名称,因此需要将图片名称提取出来。这里我的图片存储是按照当天的年月日作为文件夹,使用uuid去除-,再加上之前的文件后缀名作为文件名来存储文件的

第一种方法:直接提取

public static String getFileNameFromUrl(String url){
    // 编写正则表达式
    String regFileName = "([0-9]+\/)+([a-zA-Z0-9]+)\.(jpg|png|jpeg)";
    // 匹配当前正则表达式
    Matcher matcher = Pattern.compile(regFileName).matcher(url);
    // 定义当前文件的文件名称
    String fileName = "";
    // 判断是否可以找到匹配正则表达式的字符
    if (matcher.find()) {
        // 将匹配当前正则表达式的字符串即文件名称进行赋值
        fileName = matcher.group();
    }
    // 返回
    return fileName;
}

第二种方法:将不用的部分替换为空字符串

public static String getFileNameFromUrl(String url){
    return url.replaceAll("^(http|https)\:\/\/([a-zA-Z\-]+\.)+(com|cn)\/", "")
        .replaceAll("\?([a-zA-Z]+\=[a-zA-Z0-9\.]+\&)+([a-zA-Z]+\=[a-zA-Z0-9\%]+)$", "");
}

url一般的格式:https://wenzea.oss-cn-beijing.aliyuncs.com/2022/02/12/b0d3d337eea9485e82d84c5f16fabc9f.jpg?Expires=3599658873&OSSAccessKeyId=TMP.3KeAjOmPlD3MRVM6a5Qb9NwZTMvTgDiHt6PjZy6cVjJnK5HHHDLP4O9BDzgUBdYgTCyyjFFPOWNJ6gfln6zEBvabi416j&Signature=BhMCetPDgxdXpPFG3fxpsowg3SNzQ3D而提取出来的文件名称是:2022/02/12/b0d3d337eea9485e82d84c5f16fabc9f.jpg

可以看到,在测试方法中已经成功的将文件名称提取出来了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号