• 正则表达式-linux路径匹配


    转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9860994.html

    需求

    注:此正则只用于规范linux路径格式。

    linux路径支持很多的特殊字符,但是我们应该养成一个好的习惯:只用字母、数字、下划线的组合命名目录或文件。

    如何使用正则表达式校验一个linux路径符合我们的格式要求呢?

    格式要求:

    • 必须'/'开头
    • 字符串只允许字母、数字、下划线

    正确格式如下

    /data/
    /home/conf123
    /data/nginx_conf/

    错误格式如下

    nginx_conf/
    /data//
    /data/conf@#/

    校验的表达式

    ^/(w+/?)+$

    在线测试地址

    https://www.regexpal.com/

    定义

    正则表达式(regular expression):描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

    正则表达式:就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。

    使用场景

    1.验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。

    2.用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。

    3.用来替换,比普通的替换更强大。

    分析

    用于校验上述格式的正确表达式

    ^/(w+/?)+$

    部分规则

    正则表达式用到了很多字符,所以许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 放在它们前面。

    用到的正则表达式的规则如下

    字符说明
    ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。匹配输入字符串的开始位置。要匹配 '^' 字符本身,请使用 '^'。
    $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ' ' 或 ' '。要匹配 '$' 字符本身,请使用 '$'。
    + 匹配前面的子表达式一次或多次。要匹配 '+' 字符本身,请使用 '+'。
    ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 '(' 和 ')'。
    w 匹配所有的字母、数字、下划线的字符
    ? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 '?' 字符,请使用 '?'。

    分析正则

    1. 前后使用了 '^' 和 '$' ,代表这里要校验整个字符串(从字符串开头到结尾)。
    2. 接下来 '/'字符 ,这里用了斜杆转译,代表要以 / 开头。
    3. 使用 '()'将子表达式写在括号内。
    4. 括号内的表达式:'w+',匹配出现一个或多个字母、数字、下划线的字符。'/?',匹配斜杠,可有可无。
    5. 括号外的+号,匹配括号内的规则,一次或者多次。

    将上述分析总结:校验整个字符串 -> 以斜杠开头 + ((一个或多个字符串 + 可有可无的斜杆)* n(大于0)次) 。

    思考

    以上正则是一定以斜杆开头的,不允许使用相对路径,那如果我们想支持斜杠开头可有可无,应该怎么写这个正则呢?

     

    感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章开头给出原文链接。

  • 相关阅读:
    asp.net程序集冲突解决笔记(未能加载文件或程序集"XXXXXXXXX")
    让Asp.net mvc WebAPI 支持OData协议进行分页查询操作
    jQuery Select 自动选择默认值
    nuget在jenkins上不能自动还原项目依赖包---笔记
    Ubuntu 14.04 server ssh 远程服务遇到的一点事儿
    Unbunt vi 编辑器键盘按键不正确的一次经历与解决方案
    Ubuntu root 密码 sudo passwd
    Visual Studio 2015 下 编译 libpng
    .NET使用Com组件的一点点教训笔记~
    Linux透明大页(Transparent Huge Pages)对ES性能对影响
  • 原文地址:https://www.cnblogs.com/wenjunwei/p/9860994.html
Copyright © 2020-2023  润新知