Regex,正則

來源:互聯網
上載者:User

Regex,正則

Regex是你所定義的模式模板(pattern template), Linux可以利用它來過濾文本。

Regex類型

Regex是通過Regex引擎實現的。Regex引擎是一套底層軟體,複雜解釋Regex並使用這些模式進行文本匹配。

在Linux中,有兩種流行的Regex引擎。
- POSIX基礎Regex(basic regular expression, BRE)引擎
- POSIX擴充Regex(extended regular expression)引擎

定義BRE模式特殊字元

.*[]^${}\+?|()

錨字元點號字元

點號用來匹配除分行符號以外任意單個字元。

字元組(character class)

用來限定待匹配的具體字元。

排除型字元組

尋找組中沒有的字元。只要在字元組的開頭加個脫字元^.


即使是排除,字元組仍必須匹配一個字元。

區間

可以在單破折線符號在字元組中表示字元區間。只需要指定區間的第一個字元、單破折線以及區間的最後一個字元就行了。

特殊字元組

星號

字元後放置星號表示該字元必須在匹配模式的文本中出現0次或多次。

擴充Regex問號

類似星號,不過前面的字元可以出現0次或1次,單僅限於此。

加號

表示前面的字元可以出現1次或多次,但必須出現一次。

花括弧

為可重複的Regex指定一個上限。這通常稱為間隔(interval)。可以用兩種格式來指定區間。

- m: Regex準確出現m次。

- m, n: Regex至少出現m次,至多n次。

管道符號 |

管道符號允許在檢查資料時,用邏輯OR的方式指定Regex引擎要用的兩個或多個模式。如果任何一個模式比對了資料流文本,文本就通過測試。如果沒有模式比對,則資料流文本匹配失敗。

運算式分組

可以用圓括弧進行分組。當將Regex模式分組時,該組會被視為一個標準字元。可以像對一般字元一樣給該組使用特殊字元。

實戰-解析郵件地址

基本格式: username@hostname
username可用字母數字字元以及以下特殊字元
- 點號
- 單破折線
- 加號
- 底線
hostname由一個或多個網域名稱和一個伺服器名組成。網域名稱和伺服器名只允許字母數字字元和點號、底線
從左往右開始構建Regex
1. 使用者名稱可以有多個有效字元。
^([a-zA-Z0-9_\-\.\+]+)@
2. hostname
([a-zA-Z0-9_\-\.])
3. 頂級網域名稱
\.([a-zA-Z]{2,5})
組合起來就是
^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.])\.([a-zA-Z]{2,5})

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.