正則表達式-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 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 '$' 字符本身,請使用 '\$'。
+ 匹配前面的子表達式一次或多次。要匹配 '+' 字符本身,請使用 '\+'。
( ) 標記一個子表達式的開始和結束位置。子表達式可以獲取供以后使用。要匹配這些字符,請使用 '\(' 和 '\)'。
\w 匹配所有的字母、數字、下划線的字符
? 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。要匹配 '?' 字符,請使用 '\?'。

分析正則

  1. 前后使用了 '^' 和 '$' ,代表這里要校驗整個字符串(從字符串開頭到結尾)。
  2. 接下來 '\/'字符 ,這里用了斜桿轉譯,代表要以 / 開頭。
  3. 使用 '()'將子表達式寫在括號內。
  4. 括號內的表達式:'\w+',匹配出現一個或多個字母、數字、下划線的字符。'\/?',匹配斜杠,可有可無。
  5. 括號外的+號,匹配括號內的規則,一次或者多次。

將上述分析總結:校驗整個字符串 -> 以斜杠開頭 + ((一個或多個字符串 + 可有可無的斜桿)* n(大於0)次) 。

思考

以上正則是一定以斜桿開頭的,不允許使用相對路徑,那如果我們想支持斜杠開頭可有可無,應該怎么寫這個正則呢?

 

感謝您的閱讀,如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕。本文歡迎各位轉載,但是轉載文章之后必須在文章開頭給出原文鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM