正則佐料『元字符』
標籤: 元字符
所謂的元字符,即爲特殊字符,表示有特殊的含義,要學好正則表達式,首先就得掌握好元字符。
^ 元字符
^
表示匹配字符串的開頭位置,也就是說,它匹配的是一個位置。如果要匹配^
字符本身的話,需要轉義,即\^
。接下來我們便來舉例說明:
如上圖所示,當在正則表達式輸入框中輸入^
的時候,會匹配到每行字符串開頭的那個位置(紅色豎線)。
^
在集合[]裏面的不同位置可能表示不同的含義,比如[^a]
表示匹配除了小寫字母a
之外的任意一個字符,而[a^]
表示匹配a
或^
中的其中一個字符。如下圖所示:
當
^
放在[]
裏面的第一個位置的時候,它表示非
的意思[^a-z]
,即排除a到z之間的所有小寫字母的意思;放在[]
裏面的其他位置,則沒有特殊含義[a-z^0-9]
。
$元字符
$
表示匹配字符串的結尾位置,它跟^
一樣都是匹配位置,只是^匹配的是開頭的位置,而$
匹配的是結尾的位置。如果只是想匹配$
字符,則需要轉義,即\$
。
[ 元字符
[
表示一個字符集的開始,需要配合]
來使用,比如[a-z]
表示匹配26個小寫字母的一個集合,可以匹配任意一個小寫字母。
() 元字符
左右兩個小括號是兩個元字符,但(
和)
必須在一起成對使用纔可以,它表示一個子表達式,即一個分組,一般表示捕獲組。比如([0-9])
表示匹配0到9之間的任意一個數字,且會把匹配到的這個數字保存到捕獲組1中,以便於後面引用或取值。
在正則表達式中,你不能單獨寫左括號或右括號,必須成對出現纔是正確的,否則會報錯。但如果你把(
或)
這兩個元字符轉義成普通的字符,就無所謂了,例如\(
或者\)
。
{ 元字符
{
表示限定符,是用來表示量詞的,它一般情況下必須和}
成對配合使用,不然會報錯。例如[0-9]{2}
表示一次匹配兩個連在一起的數字,而[0-9]{1,2}
表示匹配一次可以匹配1個數字或者兩個數字。
提示:
{0,}
和*
等價,{1,}
和+
等價,{0,1}
和?
等價。後面說到量詞的相關知識時,會舉例說明。
+ 元字符
+
表示匹配它前面的子表達式一次及以上。例如,[0-9]+
表示它左邊的子表達式[0-9]
需要至少匹配一次,而([0-9]{2})+
表示它左邊的子表達式([0-9]{2})
必須匹配一次及以上,也就是說,它需要匹配長度爲偶數的數字字符串。
* 元字符
*
表示匹配它左邊的子表達式0次或多次。這樣一來,它就有可能匹配到空字符串,也就是匹配到字符之間的間隙,即字符和字符之間的那個位置。
? 元字符
?
表示它左邊的子表達式可以出現0次或1次。例如,[a-z][0-9]?
表示一個小寫字母,後接一個數字0次或1次,也可以寫成[a-z][0-9]{0,1}
. 元字符
點 .
一般情況下能匹配除了換行符之外的其他字符,在某些情況下,可以匹配所有字符。
\ 元字符
\
表示轉義字符,它可以把一個普通字符轉義成特殊字符,也可以把一個特殊字符轉義爲普通字符。例如,d
表示小寫字母d,但\d
表示數字0到9的集合,即[0-9]
。\s
,\w
等等也類似。如果要表示\
,需要寫成\\
| 元字符
豎線|
表示或者的關係,表示可選的分支。例如,[1-3]
可表示爲(1|2|3)
,he(ll|r)0
可以同時匹配hello和hero
- 連接符
雖然連接符-
不是元字符,但當它放在[]
集合裏面的時候,有可能會影響整個字符集的元素範圍。例如,[1-3]
表示匹配1或2或3,但[-13]
表示匹配-或1或3,特別是對字符之間的範圍不太肯定的時候,如果只是要匹配-,那麼當它在[]裏面的時候,最好轉義一下,[\-]
當
-
放在集合[]
裏面,且是放在兩個字符之間,例如[a-z]
、[1-3]
這種的話,它是表示一個集合範圍;而當-
前面和後面沒有字符的時候,它就表示它本身。如果-
沒有在[]
裏面,則它沒有特殊含義。當要表示-
本身的時候,若-
是在[]
裏面,最好是放在集合的開始位置[-a-z]
、否則最好轉義一下[a-z\-]
本次內容相對比較簡單,只是做個簡單的介紹,後面會針對某個知識點做更詳細的介紹,希望對你有幫助。
微信公衆號:Cooking Regex