正则表达之匹配文件路径

@ 匹配路径

路径的格式

  • win下
    – 盘符 文件夹(可有可无) 文件名
    -linux下
    – /app/乱七八糟

需求

兼容两者,分开文件路径和文件

java代码

public void getPath() {
		// 测试地址
		List<String> pics = new ArrayList<String>();
		pics.add("/app/agentUpload/uploadFile/2213532144710014199/legalUrl1.jpg");
		// 这个list第一位装路径,第二位是文件名
		List<String[]> result = new ArrayList<String[]>();
		String regEx = "([\\s\\w+:]*?/?(/.+/)?)((\\w+)\\.(\\w+))$";
		Pattern p = Pattern.compile(regEx);
		for (String path : pics) {
			// 如果路径是\ 则替换成/
			path = path.replace('\\', '/');
			Matcher m = p.matcher(path);
			// 查看是否匹配到
			if (m.matches()) {
				String[] s = new String[3];
				// 打印效果
				System.out.println("group-0:"+m.group(0));
				System.out.println("group-1:"+m.group(1));
				System.out.println("group-2:"+m.group(2));
				System.out.println("group-3:"+m.group(3));
				System.out.println("group-4:"+m.group(4));
				System.out.println("group-5:"+m.group(5));
				// 获取路径和文件名
				s[0] = m.group(1);
				s[1] = m.group(3);
				s[2] = m.group(4);
				result.add(s);
			} else {
				continue;
			}
		}
		// 如果需要,可设置返回值
		//return result;
	}

结果如下:

group-0:/app/agentUpload/uploadFile/2213532144710014199/legalUrl1.jpg
group-1:/app/agentUpload/uploadFile/2213532144710014199/
group-2:/app/agentUpload/uploadFile/2213532144710014199/
group-3:legalUrl1.jpg
group-4:legalUrl1
group-5:jpg

当然,你可以往list里面加入各种不同的路径

public void getPath() {
		// 测试地址
		List<String> pics = new ArrayList<String>();
		pics.add("/app/agentUpload/uploadFile/2213532144710014199/legalUrl1.jpg");
		pics.add("F:/hhh/legalUrl.jpg");
		pics.add("F:/legalUrl.jpg");
		pics.add("F:\\legalUrl.jpg");
		// 这个list第一位装路径,第二位是文件名
		List<String[]> result = new ArrayList<String[]>();
		String regEx = "([\\s\\w+:]*?/?(/.+/)?)((\\w+)\\.(\\w+))$";
		Pattern p = Pattern.compile(regEx);
		for (String path : pics) {
			// 如果路径是\ 则替换成/
			path = path.replace('\\', '/');
			Matcher m = p.matcher(path);
			// 查看是否匹配到
			if (m.matches()) {
				String[] s = new String[3];
				// 打印效果
				System.out.println("group-0:"+m.group(0));
				System.out.println("group-1:"+m.group(1));
				System.out.println("group-2:"+m.group(2));
				System.out.println("group-3:"+m.group(3));
				System.out.println("group-4:"+m.group(4));
				System.out.println("group-5:"+m.group(5));
				System.out.println("---------------------");
				// 获取路径和文件名
				s[0] = m.group(1);
				s[1] = m.group(3);
				s[2] = m.group(4);
				result.add(s);
			} else {
				continue;
			}
		}
		//return result;
	}

结果如下:

group-0:/app/agentUpload/uploadFile/2213532144710014199/legalUrl1.jpg
group-1:/app/agentUpload/uploadFile/2213532144710014199/
group-2:/app/agentUpload/uploadFile/2213532144710014199/
group-3:legalUrl1.jpg
group-4:legalUrl1
group-5:jpg


group-0:F:/hhh/legalUrl.jpg
group-1:F:/hhh/
group-2:/hhh/
group-3:legalUrl.jpg
group-4:legalUrl
group-5:jpg


group-0:F:/legalUrl.jpg
group-1:F:/
group-2:null
group-3:legalUrl.jpg
group-4:legalUrl
group-5:jpg


group-0:F:/legalUrl.jpg
group-1:F:/
group-2:null
group-3:legalUrl.jpg
group-4:legalUrl
group-5:jpg


正则:

([\s\w+:]*?/?(/.+/)?)((\w+)\.(\w+))$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值