長春市做網(wǎng)站推廣成人速成班有哪些專業(yè)
正則表達式是由一系列元字符(Meta-characters)組成的模式,用于定義搜索或替換文本的規(guī)則。元字符具有特殊含義,用于指定搜索模式的結構。以下是一些常用的正則表達式元字符及其功能:
字符匹配符
符號 | 含義 |
---|---|
. | 匹配除 \r\n以外的任何單個字符 |
\d | 匹配數(shù)字字符 |
\D | 匹配非數(shù)字字符 |
\w | 匹配單詞字符(英文、數(shù)字、下劃線、漢字) |
\W | 匹配非單詞字符(#、@、_) |
\s | 匹配空白符(包括換行和Tab) |
\S | 匹配非空白符 |
案例:
a...b
:匹配文本中以a開頭,b結尾,中間包含三個字符的字符串 例如:aaaab、a123b\W\d\d
:匹配文本中以1個非字符開頭,后跟兩個數(shù)字的字符串 例如:#12、?00
限定符(Quantifier):
限定符用于指定符號前面的字符和組合項連續(xù)出現(xiàn)的次數(shù),常用的限定字符如下:
符號 | 含義 |
---|---|
* | 指定字符重復0次或n次 |
+ | 指定字符重復0次或n次 |
? | 指定字符重復0次或1次 |
{n} | 正好匹配n個字符或組合,n是非負數(shù) |
{n,} | 匹配n個以上的字符或組合 |
{n,m} | 匹配n-m個字符或女組合,m大于n |
案例:
[123]*
:匹配文本中由123字符組成的字符串 例如:123、11123、33\d+
: 匹配文本中重復1次或多次數(shù)字https?
:匹配文本中的http或者https字符串\d{10}
:匹配文本中10個連續(xù)的數(shù)字\d{4,}
:匹配文本中連續(xù)4個或以上的數(shù)字^\d{1,6}$
:匹配文本中連續(xù)1-6個的數(shù)字
字符類(Character Classes)
用于匹配特定的字符集合。
符號 | 含義 |
---|---|
[ ] | 可接收的字符列表 |
[^] | 不可接受的字符列表 |
- | 連字符 |
案例:
[abc]
:匹配abc中任意一個字符[^0123456789]
:匹配文本中數(shù)字以外的任意單個字符,同[^\d]
[A-Z]
:匹配任意單個大寫字母[0-9a-z]
:匹配任意單個小寫字母或數(shù)字[\w\W]
:匹配任意字符
轉義符(Escape Character)
使特殊字符失去特殊意義,被視為普通字符。
符號 | 含義 |
---|---|
\ | 隨后的字符應該被解釋為字面量字符 |
需要用到轉義符的字符有:.*+()$/\?[]^{}
,當特殊字符是在[]中時,不需要使用轉義符
案例:
0\.\d*[1-9]
:匹配一個小于0的小數(shù)
定位符(Anchors)
規(guī)定要匹配的字符串出現(xiàn)的位置,比如目標字符串是在文本的開始或者結束位置。
符號 | 含義 |
---|---|
\b | 匹配目標字符串的邊界,這里邊界指的是子串之間的空格,或者文本的前后邊界 |
\B | 匹配目標字符串的非邊界 |
^ | 匹配輸入字符開始的位置 |
$ | 匹配輸入字符結束的位置 |
案例:
\bHello\b
:匹配文本位于開頭和結尾位置的Hello 例如:在"Hello HelloWorld"文本中只能匹配到第一個Hello^[abc]
: 匹配文本中以abc中的一個字符開頭的字符串^\d\d\d\d\d\d$
:匹配文本是否是由六個數(shù)字組成的字符串 例如: 123456、000000
分組符(Grouping )
字符分組多用于將多個字符重復,主要通過使用小括號()來進行分組
符號 | 含義 |
---|---|
() | 用于分組 |
案例:
(\d{4})-(\d{2})-(\d{2})
:匹配一個日期格式(如 YYYY-MM-DD),并將年、月、日分別分組。
懶惰匹配符(Non-greedy Quantifiers)
正則表達式默認是采用貪婪匹配,當正則表達式中包含重復的限定符時,匹配盡可能多的字符。可以通過設置為懶惰匹配,匹配盡可能少的字符。
符號 | 含義 |
---|---|
? | 字符盡可能少地匹配 |
使用時與限定符號結合使用:比如*?
、{n,m}?
,盡可能少的去匹配。
案例:
1\d*?3
,在匹配文本123123123時,通過懶惰匹配會匹配到三個123\(.*?\)
,在匹配文本()()()()時,通過懶惰匹配會匹配到四個括號
選擇匹配符(Choice Meta-characters)
匹配某種字符串的時候是選擇性的,既可以匹配這個,又可以匹配那個。
符號 | 含義 |
---|---|
| | 表示邏輯“或”,用于選擇多個選項 |
案例:
(a|b)
:匹配字符a或者匹配字符b(ab)|(cd)
:匹配字符ab或者匹配字符cd