跳至內容

正則表達式/正則表達式語法

維基教科書,自由的教學讀本

本文將從形式語言角度講解正則 形式語言從字符串集合的運算定義「語言」

語言間的運算就是 Σ*冪集上的運算。

Σ是所有合法字符串,Σ*冪集就是這些字符串所能形成的所有組合。

正則的匹配規則就是對應着字符串集合的交集、併集、補集等運算。

連接運算:L1L2 = { xy | x 屬於L1並且 y 屬於L2 }。

冪運算:Ln = L … L (共 n 個 L 連接在一起),L0 = {ε}。

Kleene星號|閉包運算:L* = L0∪L1∪…∪Ln∪…。



正則表達式中一般字母可以直接對目標文本進行匹配,但是還有一些在正則語言中具有特殊含義,需要進行轉義才能匹配,如^{+<[*)>.(|$\?等字符,需要在前面加\才能正確匹配。

[]對內部的單個字符進行匹配,如[abc]可匹配a或b或c,只匹配[]內出現的字母一次。

[^]匹配非[]內部出現的字符。對應補集。如[^abc]可匹配a、b、c之外的一個字母

.匹配除換行符之外的任意一個字符。

\s 匹配空白符,包括換行,\S 匹配非空白符,不包括換行。

還有 * 對應克萊尼星號,匹配前面的子表達式零次或多次。

一串正則與一串正則可通過連接運算連接在一起,匹配更長的一串字符。

{n} n是非負整數。匹配確定的n次。對應冪運算