构造正则表达式说明
“正則表達(dá)式”描述在搜索文本正文時(shí)要匹配的一個(gè)或多個(gè)字符串。?正則表達(dá)式可用作與要搜索的文本相比較的字符模式。
正則表達(dá)式的結(jié)構(gòu)與所創(chuàng)建的算術(shù)表達(dá)式的結(jié)構(gòu)類似。?較大的表達(dá)式可由小的表達(dá)式通過(guò)使用各種元字符和運(yùn)算符進(jìn)行組合而創(chuàng)建。
正則表達(dá)式的各組成部分可以是單個(gè)字符、字符集、字符范圍或在幾個(gè)字符之間選擇。?也可以是這些組成部分的任意組合。
構(gòu)造正則表達(dá)式通過(guò)在一對(duì)分隔符之間放置表達(dá)式的各種組成部分,就可以構(gòu)建正則表達(dá)式。?在 JScript 中,分隔符是一對(duì)正斜杠 (/) 字符,如以下示例所示。
/expression/ 正則表達(dá)式示例下表包含典型正則表達(dá)式的示例。
| /^\s*$/ | 匹配空行。 |
| /\d{2}-\d{5}/ | 匹配由兩位數(shù)字、一個(gè)連字符再加五位數(shù)字組成的 ID 號(hào)。 |
| /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ | 匹配 HTML 標(biāo)記。 |
最簡(jiǎn)單的正則表達(dá)式是與搜索字符串相比較的單個(gè)普通字符。?例如,單字符正則表達(dá)式?A?會(huì)始終匹配字母 A,無(wú)論其會(huì)出現(xiàn)在搜索字符串的哪個(gè)位置。
以下是 JScript 單字符正則表達(dá)式的一些示例。
/a/ /7/ /M/可以將多個(gè)單字符組合起來(lái)以形成較長(zhǎng)的表達(dá)式。?例如,正則表達(dá)式?/the/?會(huì)匹配以下搜索字符串中的“the”:“the”、“there”、“other”和“over the lazy dog”。
無(wú)需使用任何串聯(lián)運(yùn)算符。?只需連續(xù)輸入字符即可。
元字符除普通字符之外,正則表達(dá)式還可以包含“元字符”。?例如,元字符?\d,它與數(shù)字字符相匹配。
有關(guān)更多信息,請(qǐng)參見(jiàn)正則表達(dá)式語(yǔ)法。
普通字符包括沒(méi)有顯式指定為元字符的所有可打印和不可打印字符。?這包括所有大小寫(xiě)字母、所有數(shù)字、所有標(biāo)點(diǎn)符號(hào)和一些符號(hào)。
匹配任意字符句點(diǎn) (.) 可匹配字符串中的任意單個(gè)打印或非打印字符,換行符 (\n) 除外。?/a.c/?正則表達(dá)式可匹配“aac”、“abc”、“acc”、“adc”、“a1c”、“a2c”、“a-c”和“a#c”。
若要匹配搜索字符串中包含的句點(diǎn) (.),則可以在表達(dá)式中句點(diǎn)的前面放置一個(gè)反斜杠 (\)。?表達(dá)式/filename\.ext/?匹配“filename.ext”。
匹配字符列表可以通過(guò)在方括號(hào) [ ] 中放置一個(gè)或多個(gè)單個(gè)字符,創(chuàng)建匹配字符的列表。
括號(hào)表達(dá)式中的任何字符均僅與正則表達(dá)式中緊鄰括號(hào)表達(dá)式的單個(gè)字符相匹配。?例如,/Chapter [12345]/?表達(dá)式匹配“Chapter 1”、“Chapter 2”、“Chapter 3”、“Chapter 4”和“Chapter 5”。
要使用范圍代替字符本身來(lái)表示匹配字符,可以使用連字符 (-)。?表達(dá)式?/Chapter [1-5]/?與?/Chapter [12345]/?等效。
若要查找不在列表或范圍內(nèi)的所有字符,請(qǐng)將插入符號(hào) (^) 放在列表的開(kāi)頭。?例如,表達(dá)式?/[^aAeEiIoOuU]/?匹配任何非元音字符。
有關(guān)更多信息,請(qǐng)參見(jiàn)匹配字符的列表。
限定符可以使用“限定符”指定其中的單個(gè)字符或字符集重復(fù)指定次數(shù)的正則表達(dá)式。
限定符引用在其前面并與其緊鄰(左側(cè))的表達(dá)式。
限定符位于大括號(hào) {} 中,并包含指示出現(xiàn)次數(shù)上下限的數(shù)值。?例如,c{1,2}?匹配 1 個(gè)或 2 個(gè)字母 c。
僅指定一個(gè)數(shù)字時(shí),除非其后緊跟一個(gè)逗號(hào),否則表示上限。?例如,c{3}?匹配 3 個(gè)字符 c,而?c{5,}?匹配 5 個(gè)或更多字母 c。
還可以使用單字符限定符,如下表所示。
| * | {0,} | 匹配上一個(gè)元素零次或多次。 |
| + | {1,} | 匹配上一個(gè)元素一次或多次。 |
| ? | {0,1} | 匹配前面的元素零次或一次。 |
以下是一些表達(dá)式示例及其匹配的搜索字符串。
| /Chapter [1-9][0-9]{0,}/?或 /Chapter [1-9][0-9]*/ | 匹配?[0-9]?零次或多次。 | “Chapter 1”、“Chapter 25”、“Chapter 401320” |
| /Chapter [0-9]{1,2}/ | 匹配?[0-9]?一次或兩次。 | “Chapter 0”、“Chapter 03”、“Chapter 1”、“Chapter 25”、“Chapter 40” |
| /Chapter [1-9][0-9]{0,1}/?或 /Chapter [1-9][0-9]?/ | 匹配?[0-9]?零次或一次。 | “Chapter 1”、“Chapter 25”、“Chapter 40” |
有關(guān)更多信息,請(qǐng)參見(jiàn)?JScript 中的限定符。
行邊界和字邊界通過(guò)“定位點(diǎn)”,您可以指定正則表達(dá)式必須位于搜索字符串的開(kāi)頭或結(jié)尾,或者位于搜索字符串中行或字的開(kāi)頭或結(jié)尾位置,以形成匹配。?有關(guān)更多信息,請(qǐng)參見(jiàn)定位點(diǎn)。
指定替換項(xiàng)“|”字符指定表示匹配的兩個(gè)或多個(gè)替換項(xiàng)。?例如,JScript 正則表達(dá)式?/(Chapter|Section) [1-9]/?匹配以下內(nèi)容:“Chapter 1”、“Chapter 9”和“Section 2”。?有關(guān)更多信息,請(qǐng)參見(jiàn)替換和子表達(dá)式。
使用子匹配項(xiàng)在正則表達(dá)式中使用括號(hào)可創(chuàng)建子表達(dá)式。?程序可檢索生成的子匹配項(xiàng)。?有關(guān)更多信息,請(qǐng)參見(jiàn)替換和子表達(dá)式。
可以從正則表達(dá)式和替換字符串中引用子表達(dá)式。?有關(guān)更多信息,請(qǐng)參見(jiàn)?JScript 中的反向引用。
請(qǐng)參見(jiàn)概念
正則表達(dá)式編程 正則表達(dá)式語(yǔ)法轉(zhuǎn)載于:https://www.cnblogs.com/milantgh/p/3637788.html
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)