您好,登錄后才能下訂單哦!
PHP
正則表達式中包含三種元素分別為:量詞、元字符、修飾符
量詞
語法 描述
元字符
語法 描述
[a-z] 匹配任何包含小寫字母 a-z的字符串
[A-Z] 匹配任何包含大寫字母 A-Z的字符串
[0-9] 匹配任何包含數字 0-9 的字符串
[abc] 匹配任何包含小寫字母 a、b、c的字符串
[abc] 匹配任何不包含小寫字母 a、b、c的字符串
[a-zA-Z0-9_]匹配任何包含 a-zA-Z0-9 和下劃線的字符串
\w 匹配任何包含 a-zA-Z0-9 和下劃線的字符串(同上)
\W 匹配任何沒有下劃線和字母數字的字符串
\d 匹配任何數字字符,和[0-9]相同
\D 匹配任何非數字字符,和[^0-9]相同
\s 匹配任何空白字符
\S 匹配任何非空白字符
\b 匹配是否到達了單詞邊界
\B 匹配是否沒有達到單詞邊界
\ 匹配正則中的特殊字符
修飾符
語法 描述
i 完成不區分大小寫的搜索
m 在匹配首內容或者尾內容時候采用多行識別匹配
x 忽略正則中的空白
A 強制從頭開始匹配
U 禁止貪婪匹配 只跟蹤到最近的一個匹配符并結束
* preg_filter — 執行一個正則表達式搜索和替換
* preg_grep — 返回匹配模式的數組條目
* preg_last_error — 返回最后一個PCRE正則執行產生的錯誤代碼
* preg_match_all — 執行一個全局正則表達式匹配
* preg_match — 執行一個正則表達式匹配
* preg_quote — 轉義正則表達式字符
* preg_replace_callback — 執行一個正則表達式搜索并且使用一個回調進行替換
* preg_replace — 執行一個正則表達式的搜索和替換
* preg_split — 通過一個正則表達式分隔字符串
$pattern = '/([\d])\/([\d])\/([\d]*)/';
$string = '26/06/2014';
echo preg_replace($pattern, "$3/$2/$1", $string);
javascript
創建方式:
1.
var pattern = new RegExp('box');
var pattern = new RegExp('box','ig');
2.
var pattern = /box/;
var pattern = /box/ig;
模式修飾符的可選參數
參數 含義
i 忽略大小寫
g 全局匹配
m 多行匹配
RegExp 對象的方法
方法 功能
test 在字符串中測試模式匹配,返回 true 或 false
exec 在字符串中執行匹配搜索,返回結果數組
例1: var pattern = /box/i;
var str = "This is a Box!";
alert(pattern.test(str));
例2: var pattern = /box/i;
var str = "This is a Box!";
alert(pattern.exec(str));
String 對象也提供了 4 個使用正則表達式的方法。
方法 含義
match(pattern) 返回 pattern 中的子串或 null
replace(pattern, replacement) 用 replacement 替換 pattern
search(pattern) 返回字符串中 pattern 開始位置
split(pattern) 返回字符串按指定 pattern 拆分的數組
RegExp 對象的靜態屬性
屬性 短名 含義
input $_ 當前被匹配的字符串
lastMatch $& 最后一個匹配字符串
lastParen $+ 最后一對圓括號內的匹配子串
leftContext $` 最后一次匹配前的子串
multiline $* 用于指定是否所有的表達式都用于多行的布爾值
rightContext $' 在上次匹配之后的子串
單個字符和數字
元字符/元符號 匹配情況
. 匹配除換行符外的任意字符
[a-z0-9] 匹配括號中的字符集中的任意字符
[a-z0-9] 匹配任意不在括號中的字符集中的字符
\d 匹配數字
\D 匹配非數字,同[^0-9]相同
\w 匹配字母和數字及
\W 匹配非字母和數字及
字符類:空白字符
元字符/元符號 匹配情況
\0 匹配 null 字符
\b 匹配空格字符
\f 匹配進紙字符
\n 匹配換行符
\r 匹配回車字符
\t 匹配制表符
\s 匹配空白字符、空格、制表符和換行符
\S 匹配非空白字符
字符類:錨字符
元字符/元符號 匹配情況
^ 行首匹配
$ 行尾匹配
\A 只有匹配字符串開始處
\b 匹配單詞邊界,詞在[]內時無效
\B 匹配非單詞邊界
\G 匹配當前搜索的開始位置
\Z 匹配字符串結束處或行尾
\z 只匹配字符串結束處
字符類:重復字符
元字符/元符號 匹配情況
x? 匹配 0 個或 1 個 x
x* 匹配 0 個或任意多個 x
x+ 匹配至少一個 x
(xyz)+ 匹配至少一個(xyz)
x{m,n} 匹配最少 m 個、最多 n 個 x
字符類:替代字符
元字符/元符號 匹配情況
this|where|logo 匹配 this 或 where 或 logo 中任意一個
字符類:記錄字符
元字符/元符號 匹配情況
(string) 用于反向引用的分組
\1 或$1 匹配第一個分組中的內容
\2 或$2 匹配第二個分組中的內容
\3 或$3 匹配第三個分組中的內容
var pattern = /(\d)\/(\d)\/(\d*)/;
var str = '26/06/2014';
var result = str.replace(pattern,'$3/$2/$1');
alert(result);
linux
字符類代表意義[:alnum:]代表英文大小寫字符及數字,即0-9,A-Z,a-z[:alpha:]代表任何英文大小字符,即A-Z,a-z[:lower:]代表小寫字符,即a-z[:upper:]代表大寫字符,即A-Z[:digit:]代表數字,即0-9[:xdigit:]代表十六進制的數字類型,因此包括0-9,A-F,a-f的數字與字符[:blank:]代表空格鍵與tab按鍵[:graph:]除了空格與tab按鍵之外的其它所有按鍵[:space:]任何會產生空白的字符,包括空格鍵,Tab鍵,CR等[:cntrl:]代表鍵盤上面的控制按鍵,既包括CR,LF,Tab,Del等[:print:]代表任意可打印字符[:punct:]代表標點符號,即" ' ? ! ; : # $
基礎正則表達式語法(RE語法):一個字符串如果是正則表達式表示的,則其中的任意字符被稱為RE字符。
特殊字符為:
只支持普通正則表達式語法 ^ $ . \ [ ] " '
支持擴展正則表達式語法 ^ $ . \ [ ] " ' + ? | ( ) 基礎RE字符意義與范例^word
意義:待查找的字符串(word)在行首
范例:查找行首為#開頭的哪一行,并列出行號
grep -n '^#' regular_express.txtword$
意義:待查找的字符串(word)在行尾
范例:將行尾為!的那一行打印出來,并列出行號
grep -n '!$' regular_express.txt.
意義:代表一定有一個任意字符的字符(除換行符),在awk中可匹配換行符
范例:查找的字符串可以使(eve)(eae)(eee)等,即e與e之間一定要有一個字符,不能是(ee)!
grep -n 'e.e' regular_express.txt \
意義:轉義字符,將特殊符號的特殊意義去除,將普通字符變為特殊字符。
范例:查找含有單引號'的那一行
grep -n \' regular_express.txt
意義:重復0個到無窮多個前一個字符
范例:找出含有(es)(ess)(esss)等的字符串,注意,因為可以是0個,所以es也是符合待查找字符串。另外,因為為重復“前一個RE字符”的符號,因此在之前一定要緊接著一個RE字符!例如任意字符則為.
grep -n 'ess' regular_express.txt[list]
意義:從字符集合的RE字符里面找出想要選取的字符(不包括換行符),在awk中可以包含換行符。注意此時中括號里的.*等特殊字符均變成一般字符(除了[])。
范例:查找含有(gl)或(gd)的那一行,需要特別留意的是,在[]當中代表一個待查找的字符,例如“a[afl]y”代表查找的字符串可以是aay,afy,或aly
grep -n 'g[ld]' regular_express.txt[n1-n2]
意義:從字符集和的RE字符里面找出想要選取的字符范圍
范例:查找含有任意數字的那一行。需特別留意,在字符集合[]中的減號-是有特殊含義的,它代表兩個字符之間的所有連續字符(與編碼順序有關)
grep -n '[0-9]' regular_express.txt[^list]
意義:反向選擇
范例:查找的字符串可以是(oog)(ood)但不能是(oot)
grep -n 'oo[^t]' regular_express.txt
{n}
{n,}
{n,m}
意義:連續n到m個的前一個RE字符,若為{n}則是連續n個的前一個RE字符,若為{n,}則是連續n個以上的前一個RE字符 。
在支持擴展的正則表達式中用另一種形式,且n,m必須是0到255之間的整數:
注:本質上是擴展正則表達式的語法
范例:在g與g之間有2個到3個的o存在的字符串
grep -n 'go{2,3}' regular_express.txt
4 擴展的正則表達式語法
若要支持:
grep需加-E (或者使用到擴展符號時加\)
sed需加-r (或者使用到擴展符號時加\)
awk,perl本身支持擴展這則表達式(也就是說awk中如果要引用(為普通字符要[(]如此使用。)擴展RE字符意義與范例+
意義:重復一個或一個以上的前一個RE字符
o+代表一個以上的o?
意義:零個或一個的前一個RE字符
o?代表空或o|
意義:用或(or)的方式找出數個字符串,兩邊的字符串不能加額外的空格,
ABC|DEF表示ABC或DEF,A(BC|DE)F表示ABCF或ADEF
范例:去除空白行和行首為#的行
grep -Env '^$|^#' regular_express.txt ()
意義:找出“組”字符串,[]的引申
范例:查找glad或good這兩個字符串,因為g與d是重復的,所以可以將la與oo以或的方式列于()中
grep -En 'g(la|oo)d' regular_express.txt ()+意義:重復一個或一個以上的前一個“組”
{n}
{n,}
{n,m}與普通正則表達式含義一致,只是在支持擴展正則表達式中要用此形式,即awk、grep -E、sed -r 中使用。
5,元字符
元字符:是一種perl風格的正則表達式,只有一部分文本處理工具支持它,并不是所有的工具都支持。
相當于[字符集]的簡寫。元字符意義和范例\b
意義:單詞邊界
范例:\bcool\b匹配cool但不匹配coolant,特殊字符后面不能加 ? +等量詞\B
意義:非單詞邊界
范例:cool\B匹配coolant但不匹配cool,特殊字符后面不能加 ? +等量詞\d
意義:單個數字字符
范例:b\db匹配b2b,但不匹配bcb\D
意義:單個非數字字符
范例:b\Db匹配bcb,但不匹配b2b\w
意義:單個單詞字符(字母、數字與_)
范例:\w匹配1或a等,但不匹配%等\W意義:單個非單詞字符\n意義:換行符\s意義:單個空白字符,換頁、制表、換行、回車以及空格。[\f\t\n\r ]\S意義:單個非空白字符\r意義:回車
6,幾種有用的正則表達式項目正則表達式匹配正規文本中的單詞
\b[[:alpha:]]+\b
或
(^| )["({[]book[]})"?,.:;!'s ]( |$)匹配空行^$匹配含有空格的空白行和空行^空格$匹配整個行^.$匹配一個或多個空格空格空格匹配s前面含有任意abc隨機組合的字符串[abc]s匹配格式化的美元數額\$[空格0-9]*.[0-9][0-9]匹配電子郵件地址[A-Za-z0-9.]+@[A-Za-z0-9.]+.[a-zA-Z]{2,4}匹配一個HTTP URLhttp://[a-zA-Z0-9-.]+.[a-zA-Z]{2,4}
linux通配符
shell通配符
注意,這里的通配符雖然和正則表達式相似,但是是基于bash解釋器解析的,而正則表達式由正則引擎的軟件(如awk,grep,sed等)解析,二者完全不同。
通配符字符
*代表0個或多個任意字符?代表一定有一個任意字符[ ][abcd],表示一個字符,或a或b或c或d[-][0-9],表示一個數字,0到9之間的某個[^][^abc],表示一個字符,且不是a、b、c
范例:
[python] view plaincopy
uname -r
/kernel/drivers # 系統先執行 uname -r 找出輸出結果;將結果累加在目錄上面,來執行 cd 的功能! 正則表達式(regular express)基本上是一種“表示法”,他是以行為單位來進行字符串的處理行為。只能使用在支持它的工具程序(如vi、grep、awk、sed中)。正則表達式與shell通配符的關系就像是局部變量和全局變量的關系(即以后遇到一個命令如果支持正則表達式,則通配符概念拋棄。否則使用通配符)。
更多文章請關注:http://www.ilovehai.com
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。