正則表達式-linux路徑匹配

轉載請註明出處:https://mp.csdn.net/mdeditor/83930012

需求

使用正則表達式判斷字符串是否爲liunx路徑

格式要求:

  • 必須’/'開頭
  • 字符串只允許字母、數字、下劃線

正確格式如下

/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)次)

思考

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章