正则表达式-linux路径匹配
转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9860994.html
需求
注:此正则只用于规范linux路径格式。
linux路径支持很多的特殊字符,但是我们应该养成一个好的习惯:只用字母、数字、下划线的组合命名目录或文件。
如何使用正则表达式校验一个linux路径符合我们的格式要求呢?
格式要求:
- 必须'/'开头
- 字符串只允许字母、数字、下划线
正确格式如下
/data/
/home/conf123
/data/nginx_conf/
错误格式如下
nginx_conf/
/data//
/data/conf@#/
校验的表达式
^\/(\w+\/?)+$
在线测试地址
定义
正则表达式(regular expression):描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
正则表达式:就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。
使用场景
1.验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。
2.用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。
3.用来替换,比普通的替换更强大。
分析
用于校验上述格式的正确表达式
^\/(\w+\/?)+$
部分规则
正则表达式用到了很多字符,所以许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 \ 放在它们前面。
用到的正则表达式的规则如下
| 字符 | 说明 |
|---|---|
| ^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。匹配输入字符串的开始位置。要匹配 '^' 字符本身,请使用 '\^'。 |
| $ | 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 '$' 字符本身,请使用 '\$'。 |
| + | 匹配前面的子表达式一次或多次。要匹配 '+' 字符本身,请使用 '\+'。 |
| ( ) | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 '\(' 和 '\)'。 |
| \w | 匹配所有的字母、数字、下划线的字符 |
| ? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 '?' 字符,请使用 '\?'。 |
分析正则
- 前后使用了 '^' 和 '$' ,代表这里要校验整个字符串(从字符串开头到结尾)。
- 接下来 '\/'字符 ,这里用了斜杆转译,代表要以 / 开头。
- 使用 '()'将子表达式写在括号内。
- 括号内的表达式:'\w+',匹配出现一个或多个字母、数字、下划线的字符。'\/?',匹配斜杠,可有可无。
- 括号外的+号,匹配括号内的规则,一次或者多次。
将上述分析总结:校验整个字符串 -> 以斜杠开头 + ((一个或多个字符串 + 可有可无的斜杆)* n(大于0)次) 。
思考
以上正则是一定以斜杆开头的,不允许使用相对路径,那如果我们想支持斜杠开头可有可无,应该怎么写这个正则呢?
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章开头给出原文链接。
正则表达式-linux路径匹配的更多相关文章
- JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫
JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接 ...
- SpringMVC路径匹配规则AntPathMatcher
前言 本文是基于Spring Framework 4.3.3分析. 正文 SpringMVC的路径匹配规则是依照Ant的来的. 实际上不只是SpringMVC,整个Spring框架的路径解析都是按照A ...
- Srping MVC ant路径匹配
背景 最近有一个功能设计path匹配,开发说支持ant匹配,这是我第一次听说这个词,赶紧补一下功课. Ant匹配规则 1.前言 (1)SpringMVC的路径匹配规则是按照Ant来的,实际上不只是Sp ...
- Nginx 实践:location 路径匹配
1. 目标 nginx 反向代理,路径映射的过程是什么?如何配置路径映射规则? 2.location 路径匹配 2.1 匹配规则: location 路径正则匹配: 符号 说明 ~ 正则匹配,区分大小 ...
- C#正则表达式Regex常用匹配
使用Regex类需要引用命名空间:using System.Text.RegularExpressions; 利用Regex类实现验证 示例1:注释的代码所起的作用是相同的,不过一个是静态方法,一个是 ...
- SpringMVC常用注解,返回方式,路径匹配形式,验证
常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping ...
- Java中windows路径转换成linux路径等工具类
项目中发现别人写好的操作系统相关的工具类: 我总结的类似相关博客:http://www.cnblogs.com/DreamDrive/p/4289860.html import java.net.In ...
- JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分)
JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分) 1.匹配属性的开头 $("[attributeName^='value']"); 2.匹配属性的结尾 ...
- Struts 之 通配符 路径匹配 常量用法 配置默认值
Struts 框架学习 Action的开发的几种方式 方式1 : 继承ActionSupport 如果使用Struts校验功能,必须继承此类 方式2 : 实现Action接口 方式3 :不继承 ...
随机推荐
- 将Paul替换成Ringo
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- EFLinq查询
1.无参数查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToList ...
- Redis Sentinel 配置文件
基础参考:https://www.cnblogs.com/wang-li/p/9955303.html 配置文件讲解 1.sentinel monitor # sentinel monitor < ...
- 《java从入门到精通》学习记录
目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...
- 利用java解压,并重命名
由于工作需要,写了一个小工具,利用java来解压文件然后对文件进行重命名 主要针对三种格式,分别是zip,rar,7z,经过我的多次实践我发现网上的类库并不能解压最新的压缩格式 对于zip格式: ma ...
- 虚拟机Linux不能上网简单有效的解决办法
对于刚开始接触Linux系统的用户来说,先使用虚拟机Linux学习是不错的选择.但是在用虚拟机上网的时候,总是出现这样那样的错误,到底该怎么办呢?本文笔者和大家分享一下虚拟机Linux不能上网的简单有 ...
- 11g直接路径读、相关参数、10949事件介绍
转载自刘向兵老师:http://www.askmaclean.com/archives/11g-direct-path-read-10949-_small_table_threshold-_seria ...
- [转] Firewall and network filtering in libvirt
Firewall and network filtering in libvirt There are three pieces of libvirt functionality which do n ...
- 背水一战 Windows 10 (98) - 关联启动: 使用外部程序打开一个文件, 使用外部程序打开一个 Uri
[源码下载] 背水一战 Windows 10 (98) - 关联启动: 使用外部程序打开一个文件, 使用外部程序打开一个 Uri 作者:webabcd 介绍背水一战 Windows 10 之 关联启动 ...
- Python编程练习:使用 turtle 库完成叠边形的绘制
绘制效果: 源代码: # 叠边形 import turtle turtle.setup(650,350,200,200) turtle.penup() turtle.fd(-100) turtle.l ...