天天看點

初步學習正規表達式

目錄

分隔符

字元類和類型

重複

子表達式

子表達式計數

定位到字元串的開始或末尾

分支

比對特殊字元

特殊字元含義

  • 正規表達式必須包含在一對分隔符中。可以選擇任何非字母,數字,"\" 或空格的字元作為分隔符。字元串的開始和結束必須有比對的分隔符。
  • 最常用的分隔符是"/"。 如比對"shop": /shop/
  • 如果要在正規表達式中比對字元"/",需要使用"\"來轉義"/"。如比對"http://": /http:\/\//

  • 可以用字元"."作為比對除換行符(\n)之外任何字元的通配符。如:/.at/ 可以比對“cat”,“sat”,“mat”等,通常這種通配符的比對适用于作業系統的檔案名比對。
  • /[a-z]at/ 表示第一個字元是a到z之間的字元,後面比對at;任何[ ]中的内容都是一個字元類,也就是說方括号内的表達式隻比對一個字元。
  • /[a-zA-Z]/ 表示比對大小寫的任何字元。
  • /[^a-z]/ 用來比對任何不在a和z之間的字元。當 ^ 符号在 [ ] 中時,表示否的意思。

  • "*"表示這個模式可以重複出現0次或多次。
  • "+"表示這個模式可以重複出現1次或多次。
  •  "?" 表示這個模式可以重複出現1次或0次。
  • /[[:alnum:]]+/ 表示至少有一個字母字元。

  • 通常,可以将一個表達式分隔為幾個子表達式,如:/(very)*large/ 表示very可以重複出現0次或多次,可以比對“large”,“very large”,“very very large”等。

  • { } 中使用數字表達式來指定内容允許重複的次數。
  • /(very){3}/ 表示very重複3次
  • /(very){1,3}/ 表示very重複1~3次
  • /(very){2, }/ 表示最少要重複2次

  • ^ 用于正規表達式的開始,表示子字元串必須出現在被搜尋字元串的開始處。
  • $ 用于正規表達式的末尾,表示子字元串必須出現在被搜尋字元串的末尾。
  • /^bob/ 表示要在開始處比對 bob - /com$/ 表示要以com結束

  •  | 在正規表達式中表示模式選擇。
  • /com|edu|net/ 表示比對com 或edu 或net

  • 如果要比對一個特殊字元,如“.”,“{”,“$”,就必須在它們前面加一個反斜杠“\”。
  • 如果要比對一個反斜杠“\”,則必須用兩個反斜杠“\\”來表示。
  • 在php中,必須使用單引号來引用正規表達式模式。使用雙引号引用的正規表達式将帶來一些不必要的複雜性。

在PCRE正規表達式中,用于方括号外面的特殊字元

字元 意義
\ 轉義字元 ) 子模式的結束
^ 在字元串開始比對 * 重複0次或更多次
$ 在字元串末尾比對 + 重複一次或更多次
. 比對除換行符\n之外的字元 { 最小/最大量記号的開始
| 選擇分支的開始(或) } 最小/最大量記号的結束
( 子模式的開始 ? 标記一個子模式為可選的

在PCRE正規表達式中,用于方括号裡面的特殊字元

非,僅用在開始位置
- 用于指定字元範