感覺這幾天學習一直不在狀態,又重新把web開發的內容從基礎開始學了一遍,可是學的時候並不是像我當初想的那樣,像複習一樣過一遍就行了,看來我錯了,當初學習正規表示式的時候,認為把一些常用的元字元和修正符記住就行了,可是,現在把正規表示式學了一遍又一遍,每次學都有不同的理解,同時也謝謝我**幫助學習正規表示式,,
1.正規表示式的語法
定界符號
除了字母、數字和正斜線\以外的任何字元都可以都定界符號 / / 原子
原子是正規表示式最基本組成單位,而且必須至少要包含乙個原子
在正規表示式中代表範圍的原子
\d : 表示任意乙個十進位制的數字
\d : 表示任意乙個除數字以外的字元
\s : 表示任意乙個空白字元、空格、\n\r\t\f
\s : 表示任意乙個非空白
\w : 表示任意乙個字 a-z a-z 0-9_
\w : 表示任意乙個非字,除了a-za-z0-9_以外的任意乙個字元
元字元元字元是用來修飾原子用的,不可以單獨使用
* : 表示其前原子可以出現0次、1次或多次
+ : 表示其前原子可以出現1次或多次
?: 表示其前的原子可以出現0次或1次
{}: 用於自己定義前面原子出現的次數
表示乙個整數,表示其前原子只能出現m次
m和n表示乙個整數,m 於n
表示前面的原子出現的次數大於等於m次
. :預設情況下,表示除換行符外的任意字元
^:直接在乙個正規表示式的第乙個字元出現,則必須以這個表示式開始
$:直接在正規表示式的最後乙個字元出現,則必須以這個表示式結束
| : 表示或的關係,優先順序是最低的,最後考慮它的功能
(): 1.作為大原子使用
2.改變優先順序
3.作為子模式使用,正規表示式不光對乙個字串匹配一次,全部匹配作為乙個
大模式,放到陣列的第乙個元素中,每個()是乙個子模式按順序放到陣列的
其他元素中去
4.可以取消子模式,就將()作為大原子或改變優先順序使用,在括號中最前面使
用?:就可以取消()子模式
5.反向引用,在模式中直接將子模式取出來
\1 取第乙個子模式 \2取第二個子模式 主義單引號和雙引號
"\\1" '\1'
\b: 表示乙個邊界
\b: 表示乙個非邊界
模式修正符
1.模式修正符可以使用乙個,每乙個具有一定的意義。也可以連續使用多個
2.是對整個正規表示式調優使用,是對正規表示式功能的擴充套件
i: 和模式進行匹配不區分大小寫
m:將字串視為一行
s: . 預設情況下,不能換行,如果使用修正符s則表示換行
x:模式中的空白忽略不計
a:表示必須以什麼開發
z:表示必須以什麼結尾
u:正規表示式的特點:就是比較貪婪,.* ,.+所有字元符合這種要求
解決的方法:
使用模式修正符 u
另一種使用?完成 .*? .+?
如果兩種情況同時出現,則又開啟貪婪
/原子和元字元/模式修正符號 /為定界符
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...