php中字符串與正則表達式,php正則表達式語法

本文目錄一覽:

PHP 字符串替換 正則表達式 preg_match_all 方法

?php

$a = “floor(ceil(TC003*TC003)*price3+floor(20*(TC123+TC101))+(TC213+TC033)*tTC001000+pprice222+tc1)”;

$out = preg_replace(‘/(?:TC\d{3}|price\d{1})(?!\d)/i’,’1′,$a);

echo ‘pre’;

print_r($out);

//結果

//floor(ceil(1*1)*1+floor(20*(1+1))+(1+1)*tTC001000+pprice222+tc1)

PHP中的正則表達式是什麼意思?

是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。

正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。

給定一個正則表達式和另一個字符串,我們可以達到如下的目的:

1. 給定的字符串是否符合正則表達式的過濾邏輯(稱作「匹配」);

2. 可以通過正則表達式,從字符串中獲取我們想要的特定部分。

正則表達式的特點是:

1. 靈活性、邏輯性和功能性非常的強;

2. 可以迅速地用極簡單的方式達到字符串的複雜控制。

3. 對於剛接觸的人來說,比較晦澀難懂。

由於正則表達式主要應用對象是文本,因此它在各種文本編輯器場合都有應用,小到著名編輯器EditPlus,大到Microsoft Word、Visual Studio等大型編輯器,都可以使用正則表達式來處理文本內容。

php中正則表達式匹配字符串並輸出

用explode更方便,例如:

$str=”…..\t分割的字符串”;

list($t,$r)=explode(“\t”, $str);

echo $r;

上面的$t是用來佔位的,代碼執行後$r就是我們需要的第二個字段值

php 怎樣判斷一個字符串為正則表達式

正則表達式有定界符,除了字母、數字和反斜線(\)之外的任何字符都可以作為定界符號

PHP正則表達式的使用技巧

PHP正則表達式的定義

用於描述字符排列和匹配模式的一種語法規則 它主要用於字符串的模式分割 匹配 查找及替換操作

PHP中的正則函數

PHP中有兩套正則函數 兩者功能差不多 分別為

一套是由PCRE(Perl Compatible Regular Expression)庫提供的 使用 preg_ 為前綴命名的函數

一套由POSIX(Portable Operating System Interface of Unix )擴展提供的 使用以 ereg_ 為前綴命名的函數 (POSIX的正則函數庫 自PHP 以後 就不在推薦使用 從PHP 以後 就將被移除)

由於POSIX正則即將推出歷史舞台 並且PCRE和perl的形式差不多 更利於我們在perl和php之間切換 所以這裡重點介紹PCRE正則的使用

PCRE正則表達式

PCRE全稱為Perl Compatible Regular Expression 意思是Perl兼容正則表達式

在PCRE中 通常將模式表達式(即正則表達式)包含在兩個反斜線 / 之間 如 /apple/

正則中重要的幾個概念有 元字符 轉義 模式單元(重複) 反義 引用和斷言 這些概念都可以在文章[ ]中輕鬆的理解和掌握

常用的元字符(Meta character)

元字符     說明

/A       匹配字符串串首的原子

/Z       匹配字符串串尾的原子

/b       匹配單詞的邊界     //bis/   匹配頭為is的字符串   /is/b/   匹配尾為is的字符串   //bis/b/ 定界

/B       匹配除單詞邊界之外的任意字符   //Bis/   匹配單詞 This 中的 is

/d     匹配一個數字 等價於[ ]

/D     匹配除數字以外任何一個字符 等價於[^ ]

/w     匹配一個英文字母 數字或下劃線 等價於[ a zA Z_]

/W     匹配除英文字母 數字和下劃線以外任何一個字符 等價於[^ a zA Z_]

/s     匹配一個空白字符 等價於[/f/t/v]

/S     匹配除空白字符以外任何一個字符 等價於[^/f/t/v]

/f     匹配一個換頁符等價於 /x c 或 /cL

匹配一個換行符 等價於 /x a 或 /cJ

匹配一個回車符等價於/x d 或 /cM

/t     匹配一個製表符 等價於 /x /或/cl

/v     匹配一個垂直製表符 等價於/x b或/ck

/oNN   匹配一個八進制數字

/xNN   匹配一個十六進制數字

/cC    匹配一個控制字符

模式修正符(Pattern Modifiers)

模式修正符在忽略大小寫 匹配多行中使用特別多 掌握了這一個修正符 往往能解決我們遇到的很多問題

i     -可同時匹配大小寫字母

M     -將字符串視為多行

S     -將字符串視為單行 換行符做普通字符看待 使 匹配任何字符

X     -模式中的空白忽略不計  

U     -匹配到最近的字符串

e     -將替換的字符串作為表達使用

格式 /apple/i匹配 apple 或 Apple 等 忽略大小寫      /i

PCRE的模式單元

// 提取第一位的屬性

/^/d{ } ([/W])/d{ }// /d{ }$匹配 / / 等字符串 但上述正則表達式不匹配 / 的格式 這是因為模式 [/W] 的結果 / 已經被存儲 下個位置 / 引用時 其匹配模式也是字符 /

當不需要存儲匹配結果時使用非存儲模式單元 (? )

例如/(?:a|b|c)(D|E|F)// g/ 將匹配 aEEg 在一些正則表達式中 使用非存儲模式單元是必要的 否則 需要改變其後引用的順序 上例還可以寫成/(a|b|c)(C|E|F)/ g/

PCRE正則表達式函數

以下為引用的內容

preg_match()和preg_match_all()   preg_quote()   preg_split()   preg_grep()   preg_replace()

函數的具體使用 我們可以通過PHP手冊來找到 下面分享一些平時積累的正則表達式

匹配action屬性

以下為引用的內容

$str = ;       $match = ;       preg_match_all( //s+action=/ (?!)( *?)/ /s/ $str $match);       print_r($match); 

在正則中使用回調函數

以下為引用的內容

/**      * replace some string by callback function      *      */    function callback_replace() {         $url = ;         $str = ;         $str = preg_replace ( /(?=/saction=/ )(?!)( *?)(?=/ /s)/e search(/$url // ) $str );                  echo $str;     }          function search($url $match){         return $url / $match;     } 

帶斷言的正則匹配

以下為引用的內容

$match = ;      $str = xxxxxx cn bold font  paragraph text

;      preg_match_all ( /(?=(/w{ })) *(?=/// )/ $str $match );      echo 匹配沒有屬性的HTML標籤中的內容 ;      print_r ( $match ); 

替換HTML源碼中的地址

以下為引用的內容

$form_ = preg_replace ( /(?=/saction=/ |/ssrc=/ |/s)(?!|javascript)( *?)(?=/ /s)/e add_url(/$url / // / ) $form_ ); 

lishixinzhi/Article/program/PHP/201311/21027

PHP正則表達式基本函數

在PHP正則表達式中需要轉義的字符如下

$^*()+={}[]|/: ? “

注意 perl風格中表達式要求以/開始和結尾 如 /food/ 表匹配字符 food

perl修飾符如下

i 完成不區分大小寫的搜索

g 查找所有出現(all occurrences 完成全局搜索)

m 將一個字符串視為多行(m就表示多(multiple)) 默認情況下 ^和$字符匹配字符串中的最開始和最末尾 使用m修飾符將使^和$匹配字符串中每行的開始

s 將一個字符串視為一行 忽略其中的所有換行符;它與m修飾符正好相反

x 忽略php正則表達式中的空白和注釋

U 第一次匹配後停止 默認情況下 將找到最後一個匹配字符結果 利用這個修飾符可以在第一次匹配後停止 進而形式循環匹配

元字符說明

利用Perl正則表達式還可以做另一件有用的事情 這就是使用各種元字符來搜索匹配 元字符(metacharacter)就是一個前面有反斜線的字母字符 表示某種特殊含義 以下是一些有用的元字符

A 只匹配字符串開頭

b 匹配單詞邊界

B 匹配單詞邊界之外的任意字符

d 匹配數字字符 它與[ ]相同

D 匹配非數字字符的php正則

s 匹配空白字符

S 匹配非空白字符的php正則

[] 包圍一個字符類 字符類包括 [ ] [a z] [a zA Z] 等類似

() 包圍一個字符分組或定義一個反引用

$ 匹配行尾

^ 匹配行首

* 匹配前面的子表達式零次或多次 要匹配 * 字符 請使用 *

+ 匹配前面的子表達式一次或多次 要匹配 + 字符 請使用 +

? 匹配前面的子表達式零次或一次 或指明一個非貪婪限定符 ?

匹配除換行之外的任何字符

引出下一個元字符

w 匹配任何只包含下劃線和字母數字字符的字符串 它與 [a zA Z _]相同

W 匹配沒有下劃線和字母數字字符的字符串的php正則

Perl風格函數有

array preg_grep(string pattern array input [ flags])

搜索數組中所有元素 返回由與某個模式匹配的所有元素組成的數組

PHP 增加了一個可選參數 flag 它接受一個值 PREG_GREP_INVERT 傳遞此標誌將得到與該模式不匹配的數據元素

int preg_match(string pattern string string [ array matches [ int flags [ int offset]]])

在字符串中搜索模式 如果存在返回TRUE 否則返回FALSE

可選輸入參數matches可以包含搜索模式中包含的子模式的各個部分 默認返回 匹配的字符串 當有()子包圍時 會在數組後面輸出

int preg_match_all(string pattern string string array pattern_array [ int order])

和函數 preg_match一樣 不過 preg_match 只搜索一次 而 preg_match_all 會執行循環搜索 返回所有匹配的結果

mixed preg_replace(mixed pattern mixed replacement mixed str [ int limit])

用replacement替換pattern的所有出現 並返回修改後的結果

可選 limit 指定應當發生多少次匹配 不設置limit或設置為 將替換所有出現的情況

lishixinzhi/Article/program/PHP/201311/21050

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/277804.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-19 13:21
下一篇 2024-12-19 13:21

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中將字符串轉化為浮點數

    本文將介紹在Python中將字符串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字符串轉化為…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • Python正則表達式search()和match()有什麼區別?

    search()和match()都是Python中的正則表達式函數,它們的作用都是在一個字符串中搜索匹配正則表達式的位置,但它們有着不同的使用場景和返回結果。 一、search()…

    編程 2025-04-29
  • Python語法大全解析

    本文旨在全面闡述Python語法,並提供相關代碼示例,幫助讀者更好地理解Python語言。 一、基礎語法 1、Python的注釋方式 # 這是單行注釋 “”” 這是多行注釋,可以注…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python中複數的語法

    本文將從多個方面對Python中複數的語法進行詳細的闡述。Python中的複數是指具有實部和虛部的數,其中實部和虛部都是浮點數。它們可以用「實數+虛數j」的形式表示。例如,3 + …

    編程 2025-04-29
  • Python如何將字符串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字符串的處理提供了很多便捷的方式。如何將字符串「1234」轉化成數字「1234」呢?下面將從多個方面詳細闡述Python如何將字符…

    編程 2025-04-29

發表回復

登錄後才能評論