程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 正則模式修飾符

正則模式修飾符

編輯:關於PHP編程

 

在結束分隔符之後可以跟隨多種模式修飾符 (用php 的術語來說,叫做 pattern modifier),

在某些情況下,修飾符也可以出現在正則表達式內部,修飾模式的某些性質。我們已經在一些例子中看到過表達不區分大小寫的模式修飾符 i 。下面簡要介紹模式修飾符:

 

 

修飾符

表達式中的寫法

說明

i

(?i)

Ø 忽略大小寫

m

(?m)

Ø 增強行錨點模式

s

(?s)

Ø 點號通配模式

x

(?x)

Ø 寬松排列和注釋模式

u

 

Ø 以UTF-8讀取正則表達式和目標字符串

X

(?X)

Ø 啟用PCRE “額外功能(extra stuff)”

e

 

Ø 將replacement作為PHP代碼(只用於preg_replace)

S

 

Ø 啟用PCRE的“study”優化嘗試

下面三個很少用到

U

(?U)

Ø 交換 "*"和"*?"的匹配優先含義

A

 

Ø 將整個匹配嘗試錨定在起始位置

D

 

Ø "$1" 只能匹配EOS,而不是EOS之前的換行符

(如果使用了模式修飾符m則不會這樣)

 

表達式內部的模式修飾符  

在正則表達式內部,模式修飾符可以單獨出現,來啟用或停用某些特性(例如用"(?i)"來啟用不區分大小寫匹配,用"(?-i)"來停用。此時,它們的作用范圍持續到對應的結束括號,如果不存在,就持續到正則表達式的末尾。

 

它們也可以用作模式修飾范圍 例如 "(?i...)" 表示對此括號內的內容進行不區分大小寫匹配"(?-sm:...)" 表示在此范圍內停用s和m模式.

 

正則表達式之外,結束分隔符之後的模式修飾符可以以任何順序組織,下例中的‘si’表示同時啟用不區分大小寫和點號通配模式:

If(preg_match('{<title>(.*?)</title>}si',$html,captures))

 

摘自lostwolf's Blog

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved