夜间福利网站,免费动漫av,一级做a爰片久久毛片免费陪,夜夜骑首页,黄色毛片视频,插插插操操操,综合av色

PHP知識:正則表達(dá)式基礎(chǔ)知識

時間:2025-10-07 01:45:33 php語言

PHP知識:正則表達(dá)式基礎(chǔ)知識

  為了幫助學(xué)習(xí)者可以更好的學(xué)習(xí)PHP,小編整理了PHP語言中正則表達(dá)式基礎(chǔ)知識,希望對大家有用,更多內(nèi)容請關(guān)注應(yīng)屆畢業(yè)生網(wǎng)!

PHP知識:正則表達(dá)式基礎(chǔ)知識

  簡介

  正則表達(dá)式(Regular Expression,縮寫為regexp,regex或regxp),又稱正規(guī)表達(dá)式、正規(guī)表示式或常規(guī)表達(dá)式或正規(guī)化表示法或正規(guī)表示法,是指一個用 來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串。在很多文本編輯器或其他工具里,正則表達(dá)式通常被用來檢索和/或替換那些符合某個模式的文本 內(nèi)容。許多程序設(shè)計語言都支持利用正則表達(dá)式進(jìn)行字符串操作。例如,在Perl中就內(nèi)建了一個功能強(qiáng)大的.在正則表達(dá)式引擎。正則表達(dá)式這個概念最初是由 Unix中的工具軟件(例如sed和grep)普及開的。(摘自維基百科)

  PHP同時使用兩套正則表達(dá)式規(guī)則,一套是由電氣和電子工程師協(xié)會(IEEE)制定的POSIX Extended 1003.2兼容正則(事實(shí)上PHP對此標(biāo)準(zhǔn)的支持并不完善),另一套來自PCRE(Perl Compatible Regular Expression)庫提供PERL兼容正則,這是個開放源代碼的軟件,作者為 Philip Hazel。

  使用POSIX兼容規(guī)則的函數(shù)有:

  ereg_replace()

  ereg()

  eregi()

  eregi_replace()

  split()

  spliti()

  sql_regcase()

  mb_ereg_match()

  mb_ereg_replace()

  mb_ereg_search_getpos()

  mb_ereg_search_getregs()

  mb_ereg_search_init()

  mb_ereg_search_pos()

  mb_ereg_search_regs()

  mb_ereg_search_setpos()

  mb_ereg_search()

  mb_ereg()

  mb_eregi_replace()

  mb_eregi()

  mb_regex_encoding()

  mb_regex_set_options()

  mb_split()

  使用PERL兼容規(guī)則的函數(shù)有:

  preg_grep()

  preg_replace_callback()

  preg_match_all()

  preg_match()

  preg_quote()

  preg_split()

  preg_replace()

  定界符:

  POSIX兼容正則沒有定界符,函數(shù)的'相應(yīng)參數(shù)會被認(rèn)為是正則。

  PERL兼容正則可以使用任何不是字母、數(shù)字或反斜線(\)的字符作為定界符,如果作為定界符的字符必須被用在表達(dá)式本身中,則需要用反斜線轉(zhuǎn)義。也可以使用(),{},[] 和 <> 作為定界符

  修正符:

  POSIX兼容正則沒有修正符。

  PERL兼容正則中可能使用的修正符(修正符中的空格和換行被忽略,其它字符會導(dǎo)致錯誤):

  i (PCRE_CASELESS):

  匹配時忽略大小寫。

  m(PCRE_MULTILINE):

  當(dāng)設(shè)定了此修正符,行起始(^)和行結(jié)束($)除了匹配整個字符串開頭和結(jié)束外,還分別匹配其中的換行符(\n)的之后和之前。

  s(PCRE_DOTALL):

  如果設(shè)定了此修正符,模式中的圓點(diǎn)元字符(.)匹配所有的.字符,包括換行符。沒有此設(shè)定的話,則不包括換行符。

  x(PCRE_EXTENDED):

  如果設(shè)定了此修正符,模式中的空白字符除了被轉(zhuǎn)義的或在字符類中的以外完全被忽略。

  e:

  如果設(shè)定了此修正符,preg_replace() 在替換字符串中對逆向引用作正常的替換,將其作為 PHP 代碼求值,并用其結(jié)果來替換所搜索的字符串。 只有 preg_replace() 使用此修正符,其它 PCRE 函數(shù)將忽略之。

  A(PCRE_ANCHORED):

  如果設(shè)定了此修正符,模式被強(qiáng)制為“anchored”,即強(qiáng)制僅從目標(biāo)字符串的開頭開始匹配。

  D(PCRE_DOLLAR_ENDONLY):

  如果設(shè)定了此修正符,模式中的行結(jié)束($)僅匹配目標(biāo)字符串的結(jié)尾。沒有此選項(xiàng)時,如果最后一個字符是換行符的話,也會被匹配在里面。如果設(shè)定了 m 修正符則忽略此選項(xiàng)。

  S:

  當(dāng)一個模式將被使用若干次時,為加速匹配起見值得先對其進(jìn)行分析。如果設(shè)定了此修正符則會進(jìn)行額外的分析。目前,分析一個模式僅對沒有單一固定起始字符的 non-anchored 模式有用。

  U(PCRE_UNGREEDY):

  使“?”的默認(rèn)匹配成為貪婪狀態(tài)的。

  X(PCRE_EXTRA):

  模式中的任何反斜線后面跟上一個沒有特殊意義的字母導(dǎo)致一個錯誤,從而保留此組合以備將來擴(kuò)充。默認(rèn)情況下,一個反斜線后面跟一個沒有特殊意義的字母被當(dāng)成該字母本身。

  u(PCRE_UTF8):

  模式字符串被當(dāng)成UTF-8。

  邏輯區(qū)隔:

  POSIX兼容正則和PERL兼容正則的邏輯區(qū)隔符號作用和使用方法完全一致:

  []:包含任選一操作的相關(guān)信息。

  {}:包含匹配次數(shù)的相關(guān)信息。

  ():包含一個邏輯區(qū)間的`相關(guān)信息,可被用來進(jìn)行引用操作。

  |:表示“或”,[ab]和a|b是等價的。

  元字符與“[]”相關(guān):

  有兩組不同的元字符:一種是模式中除了方括號內(nèi)都能被識別的,還有一種是在方括號“[]”內(nèi)被識別的。

  POSIX兼容正則和PERL兼容正則“[]之外”“一致”的元字符:

  \ 有數(shù)種用途的`通用轉(zhuǎn)義符

  ^ 匹配字符串的開頭

  $ 匹配字符串的結(jié)尾

  ? 匹配0或者1

  * 匹配 0 個或多個前面指定類型的字符

  + 匹配 1 個或多個前面指定類型的字符

  POSIX兼容正則和PERL兼容正則“[]之外”“不一致”的元字符:

  . PERL兼容正則匹配除了換行符外的任意一個字符

  . POSIX兼容正則匹配任意一個字符

  POSIX兼容正則和PERL兼容正則“[]之內(nèi)”“一致”的元字符:

  \ 有數(shù)種用途的通用轉(zhuǎn)義符

  ^ 取反字符,但僅當(dāng)其為第一個字符時有效

  - 指定字符ASCII范圍,仔細(xì)研究ASCII碼,你會發(fā)現(xiàn)[W-c]等價于[WXYZ\\^_`abc]

  POSIX兼容正則和PERL兼容正則“[]之內(nèi)”“不一致”的元字符:

  - POSIX兼容正則中[a-c-e]的指定會拋出錯誤。

  - PERL兼容正則中[a-c-e]的`指定等價于[a-e]。

  匹配次數(shù)與“{}”相關(guān):

  POSIX兼容正則和PERL兼容正則在匹配次數(shù)方面完全一致:

  {2}:表示匹配前面的字符2次

  {2,}:表示匹配前面的字符2次或多次,默認(rèn)都是貪婪(盡可能多)的`匹配

  {2,4}:表示匹配前面的字符2次或4次

  邏輯區(qū)間與“()”相關(guān):

  使用()包含起來的區(qū)域是一個邏輯區(qū)間,邏輯區(qū)間的主要作用是體現(xiàn)出一些字符出現(xiàn)的邏輯次序,另一個用處就是可以用來引用(可以將此區(qū)間內(nèi)的值引用給一個變量)。后一個作用比較奇特:

  $str = "/pic/";

  /pic/p>

  echo ereg_replace("(.+)","\\1",$str);

  /pic/p>

  echo preg_replace("/(.+)/","$1",$str);

  /pic/p>

  ?>

  在引用的時候,括號是可以嵌套的,邏輯次序是按照“(”出現(xiàn)的`次序來標(biāo)定的。

  類型匹配:

  POSIX兼容正則:

  [:upper:]:匹配所有的大寫字母

  [:lower:]:匹配所有的小寫字母

  [:alpha:]:匹配所有的字母

  [:alnum:]:匹配所有的字母和數(shù)字

  [:digit:]:匹配所有的數(shù)字

  [:xdigit:]:匹配所有的.十六進(jìn)制字符,等價于[0-9A-Fa-f]

  [:punct:]:匹配所有的標(biāo)點(diǎn)符號,等價于[.,"'?!;:]

  [:blank:]:匹配空格和TAB,等價于[ \t]

  [:space:]:匹配所有的空白字符,等價于[ \t\n\r\f\v]

  [:cntrl:]:匹配所有ASCII 0到31之間的控制符。

  [:graph:]:匹配所有的可打印字符,等價于:[^ \t\n\r\f\v]

  [:print:]:匹配所有的可打印字符和空格,等價于:[^\t\n\r\f\v]

  [.c.]:功能不明

  [=c=]:功能不明

  [:<:]:匹配單詞的開始

  [:>:]:匹配單詞的結(jié)尾

  PERL兼容正則(這里可以看出PERL正則的強(qiáng)大):

  \a alarm,即 BEL 字符(’0)

  \cx "control-x",其中 x 是任意字符

  \e escape(’0B)

  \f 換頁符 formfeed(’0C)

  \n 換行符 newline(’0A)

  \r 回車符 carriage return(’0D)

  \t 制表符 tab(’0)

  \xhh 十六進(jìn)制代碼為 hh 的字符

  \ddd 八進(jìn)制代碼為 ddd 的字符,或 backreference

  \d 任一十進(jìn)制數(shù)字

  \D 任一非十進(jìn)制數(shù)的`字符

  \s 任一空白字符

  \S 任一非空白字符

  \w 任一“字”的字符

  \W 任一“非字”的字符

  \b 字分界線

  \B 非字分界線

  \A 目標(biāo)的開頭(獨(dú)立于多行模式)

  \Z 目標(biāo)的結(jié)尾或位于結(jié)尾的換行符前(獨(dú)立于多行模式)

  \z 目標(biāo)的結(jié)尾(獨(dú)立于多行模式)

  \G 目標(biāo)中的第一個匹配位置

【PHP知識:正則表達(dá)式基礎(chǔ)知識】相關(guān)文章:

PHP知識:PHP常用正則表達(dá)式大全03-16

php基礎(chǔ)知識02-27

PHP語言基礎(chǔ)知識11-30

新手PHP基礎(chǔ)知識12-09

PHP基礎(chǔ)知識大全11-07

php語言基礎(chǔ)知識03-17

php基礎(chǔ)知識學(xué)習(xí)筆記12-06

php語言基礎(chǔ)知識匯總12-20

php中session的基礎(chǔ)知識12-28