正则表达之匹配文件路径

C#中利用正则表达式检测文件路径的合法性 项目中少不了读取或设置文件路径的功能,如何才能对输入的路径是否合法进行判断呢?用正则表达式是个不错的方式。我们都知道文件路径的字符串一般格式,首先是盘符,一般是abcde等字幕,盘符后用冒号隔开,然后用“\”隔开各层文件夹,如:F:\Funny\22\renxi,在文件夹和文件命名时,不能包含\ / : * ? ” < > |等字符。基于这些原则,我们可以编写用于匹配的整个表达式。正则表达式的语法就 阅读详情

@ 匹配路径

路径的格式

  • 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+))$

文件路径的正则表达式 其中包括windows和linux文件路径的正则表达式;去除空格和斜杠转换的replaceall方法 立即下载

相关推荐

ROS2机械臂MPC轨迹规划实战:从MoveIt 2插件配置到参数调优全流程

本文详细介绍了ROS2机械臂MPC轨迹规划的全流程,从MoveIt 2插件配置到参数调优。通过模型预测控制(MPC)技术,实现高精度运动控制,特别适合复杂装配任务。文章包含环境搭建、插件部署、参数设计及实战调优方法,帮助开发者快速掌握ROS2机械臂的MPC轨迹规划技术。

i0j1k2l3m的博客 206

正则表达式匹配文件或文件夹路径

可以匹配文件或文件夹路径的正则表达式

NEKOic的博客 5818

基于STM32单片机设计的智能坐垫_431

本文设计了一款基于STM32F103C8T6单片机的智能坐垫系统,该系统集成了压力传感器、SHT30温湿度传感器、薄膜加热垫、涡轮风机、语音播报模块、OLED显示屏及HC-05蓝牙模块,实现了对用户就坐状态与坐垫微环境的实时监测与智能调控。系统通过压力传感器检测用户就坐情况,自动启动久坐计时并触发语音提醒;温湿度数据用于控制通风与加热功能,以改善座椅舒适性;用户可通过按键或手机APP设置久坐时长、手动开关通风与加热,并通过OLED屏或APP实时查看环境参数与计时状态。本设计体现了嵌入式系统在健康关怀与舒适性

409

正则匹配文件夹及文件路径

文件或文件夹路径匹配正则

普罗旺斯 5146

UNet改进(52):轴向+代理注意力让UNet既轻快又精准

本文提出了一种改进的UNet架构,通过引入轴向注意力代理模块增强医学图像分割性能。该模块将二维自注意力分解为行列两个一维注意力操作,结合可学习代理节点进行全局信息聚合,在保持计算效率的同时提升模型对长距离依赖的建模能力。实验表明,该方法在多个医学图像数据集上较传统UNet提升3.2%-5.7%的Dice系数,边界质量显著改善。该方案特别适用于具有方向性结构的医学图像分割任务,如血管、器官等,在计算复杂度和分割精度之间实现了良好平衡。

2501_91516851的博客 327

Android SELinux——neverallow问题处理(十六)

遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级,系统对 SELinux 的管控越来越严,增加了大量的 neverallow。一般情况下,向默认标签授予权限的做法是错误的,其中许多权限都是 neverallow 规则所不允许的。按照上面方法去添加 SELinux 可能会违反了 neverallow 规则,编译时候会报 neverallow 相关的错误。

小旭的专栏 2683

匹配路径的正则表达式

匹配路径的正则表达式匹配路径的正则表达式 可以使用在Javascript(匹配本地路径)^([a-zA-Z]){1}[:]{1}([//]{1}([/w])+)+$

morland的专栏 1878

权重衰减weight_decay参数从入门到精通

Weight Decay是一个正则化技术,作用是**抑制模型的过拟合**,以此来提高模型的泛化性。 目前网上对于Weight Decay的讲解都比较泛,都是短短的几句话,但对于其原理、实现方式大多就没有讲解清楚,本文将会逐步解释weight decay机制。

iioSnail的博客 4万+

java正则表达式匹配路径_(二)正则表达式匹配位置匹配攻略

本文章是在学习程序猿DD的JS正则表达式完整教程的基础上,将js正则的例子用java实现(其实大体差不多,只是细节的变化)。目的是自己过一遍,加深理解。如果侵权,请联系删除。正则表达式是匹配模式,要么匹配字符,要么匹配位置。本章讲讲正则匹配位置的汇总1、什么是位置?位置是相邻字符之间的位置。比如,下图中箭头所指的地方:image.png2、如何匹配位置呢?在ES5中,共有6个锚字符:**^** *...

weixin_39714015的博客 1750

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(五级)答案 + 解析

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(五级)答案 + 解析

伶俐角少儿编程 486

基于STM32F4XX 、HAL库的GXHT30C温湿度传感器驱动应用C语言程序设计

define GXHT30C_STATUS_WRITE_CHK (1 << 0) // 写数据校验状态。#define GXHT30C_STATUS_HUMI_TRACK (1 << 11) // 湿度跟踪报警。#define GXHT30C_STATUS_TEMP_TRACK (1 << 10) // 温度跟踪报警。#define GXHT30C_STATUS_CMD_STATUS (1 << 1) // 命令执行状态。

PP_Cottage的博客 227

c++ regex正则表达式匹配文件路径或文件夹

c++ regex正则表达式匹配文件路径或文件夹 直接上代码 #include <iostream> #include <string> #include <regex> using namespace std; int main() { string str("^[a-zA-Z]:([/\\\\]{1}[^/\\\\][^\\\\/:*?<>...

xles11的博客 3606

【25届数字IC秋招总结】面试经验7——联发科

25届数字ic面试记录——联发科

lalala0635的博客 982

java 正则匹配路径,java正则表达式匹配文件路径

I was trying out to create a regular expression to match file path in java likeC:\abc\def\ghi\abc.txtI tried this ([a-zA-Z]:)?(\\[a-zA-Z0-9_-]+)+\\? , like following codeimport java.util.regex.Pattern...

weixin_39643189的博客 1918

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

PathPicker正则表达式瀑布流:理解文件路径匹配的核心算法

PathPicker是一个强大的命令行工具,能够从各种输入源中智能提取文件路径并让用户进行选择。它最核心的功能就是**正则表达式瀑布流算法**,这个算法让PathPicker能够准确识别和匹配来自git、grep、搜索等不同来源的文件路径。🚀 ## 什么是正则表达式瀑布流? 正则表达式瀑布流是PathPicker的核心匹配机制,它通过一系列精心设计的正则表达式,按照优先级从高到低依次尝试匹配

gitblog_01031的博客 478

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

php 正则匹配所有路径,与文件路径匹配的PHP正则表达式

请注意,可能有多种类型的文件路径。例如:“/”“……”“……”(是,这可以是文件名)“文件/文件.txt”“文件/文件”“文件.txt”“文件/././/file/file/file”“/file/../../file/file/.file”(Unix)“C:\Windows\”(Windows)“c:\windows\asd/asd”(windows,php接受此项)“file/../..///...

weixin_29266647的博客 1027

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NotePad++ 正则匹配文件路径

CTRL+H -> 标记 -> 输入上面正则匹配,勾选如下,点全部标记后,会自动匹配文件路径,再点复制标记文本即可。

Coder的博客 1630

正则表达式匹配URL或者网址

正则表达式很常用,下面是我整理的匹配URL或者网址的一些表达式: 正则表达式 (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])? 匹配 http://regxlib.com/Default....

qhzhen的博客 13万+

【std::regex】C++文件路径正则表达式

今天代码中遇到使用正则表达式匹配一个文件路径的问题,需要验证传入的文件路径是否合法,学习了简单的正则表达式的写法后,简单写了如下代码,在网上找了一些在线测试正则表达式的网站,测试可以通过。 std::regex match("^[a-zA-Z]:(\\[a-zA-Z0-9]+)+$"); std::string path("D:\\test"); if (!std::regex_match(pa...

weixin_33991727的博客 991

正则表达式的学习网站

学习 http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html   验证 http://tool.chinaz.com/regex/   案例 if(String(sources[i]).match(/.*\.c$/)) /.*\.c$/ 为正则表达式标示以 /开头 以

virlhs的专栏 767

URL正则表达式

正则表达 一正则表达式 :(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;amp;:/~\+#]*[\w\-\@?^=%&amp;amp;/~\+#])?匹配 :http://regxlib.com/Default.aspx | http://electronics.cnet.com/electronics/0-634236...

qq_41962782的博客 6328

正则表达式基本的匹配案例

1.匹配时间以24小时制为例。要求匹配:23:5902:07分析:共4位数字,第一位数字可以为[0-2]。当第1位为2时,第2位可以为[0-3],其他情况时,第2位为[0-9]。第3位数字为[0-5],第4位为[0-9]正则如下:var regex = /^([01][0-9]|[2][0-3]):[0-5][0-9]$/; console.log( regex.test("23:59") ); ...

weixin_34109408的博客 401

文件路径的正则表达式改啊改的

去regexlib上找了一下关于文件路径的写法,最符合的找到一个,写法如下:([a-zA-Z]/:)(//[^///:*?但使用的时候还是出现了磁盘上文件名并不能捕获的问题,原因是在网上下的mp3文件常常会出现这样的名字xxx .mp3,到了磁盘上就成这样 c:/xxx .mp3;也就是在点号和文件名之间出现个空格,于是我针对此情况改进了表达式:([a-zA-Z]/:)("|]*)

cyclone 3169

python 正则表达式判断_正则表达式教程python | Python如何判断正则表达式是否匹配成功...

python 正则表达式 关于 和*的问题正则表达式教程里在python的帮助里有。,仔细的看一次后找一个正则表达式验证工具。其中有一个就是python写的。多试几次。正则表达式挺难掌握,掌握后又很好用,基本上各个语言通用。它其实是就是一个顺序的搜索逻辑。你想象自己写一个正则表达式编译器,然后顺序读入字符串去解析匹配,这样容易学些。以上只是学习正则表达式的经验。与问题无关。你的问题里有了括号就是指...

weixin_33613462的博客 2603

python中正则表达式“\“反斜杠的转义,以及正则表达式的变量表示法

"\\\\"四个斜杠表示正则表达式中匹配"\",即匹配字符串中的"\",这里字符串中的"\",使用了双斜杠"\\"的表示方法,因为在写字符串时对于单斜杠"\"要进行转义(实际上在内存中它就只有一个斜杠)。而为什么要使用"\\\\"来匹配单斜杠呢,原因显而易见了,首先,你的正则表达式是一个字符串,所以你写单斜杠"\"要用双斜杠"\\"表示,然后你又要匹配一个斜杠"\"(但写法上还是双斜杠"\\"),所以最后使用"\\\\"就是,前面两个斜杠表示转义字符"\",后面两个斜杠表示你要匹配的单斜杠"\"

m0_56467688的博客 1171
上一篇: ae第四天
下一篇: nodejs整理一
JarvisAI
博客等级 码龄7年 11粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值