濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 正則表達(dá)式分組實(shí)例詳解

正則表達(dá)式分組實(shí)例詳解

熱門標(biāo)簽:400電話辦理電話辦理 呼叫系統(tǒng)外呼只能兩次 ai電話機(jī)器人搭建 外呼系統(tǒng)無呼出路由是什么原因 梅縣地圖標(biāo)注 西藏智能外呼系統(tǒng)代理商 地圖標(biāo)注教學(xué)點(diǎn) 貴港公司如何申請400電話 甘肅醫(yī)療外呼系統(tǒng)排名

正則表達(dá)式分組:
如果想匹配3個(gè)數(shù)字,正則表達(dá)式可以用如下寫法:

\d{3}

以上代碼使用重復(fù)量詞可以匹配3位數(shù)字。
但是在實(shí)際應(yīng)用中,往往需要重復(fù)多個(gè)字符,例如我想重復(fù)ab兩個(gè)字符,使用以下代碼就不合適了,代碼如下:

ab{3}

以上正則表達(dá)式只能夠重復(fù)3次b。
為了實(shí)現(xiàn)重復(fù)多個(gè)字符可以使用小括號(hào)來指定子表達(dá)式或者說分組來實(shí)現(xiàn)此功能,例如:

(ab){3}

上面的正則就可以重復(fù)ab了。
所謂的分組就是使用小括號(hào)將一些項(xiàng)包括起來,使其成為獨(dú)立的邏輯域,那么就可以像處理一個(gè)獨(dú)立單元一樣去處理小括號(hào)的內(nèi)容。

下面看一段代碼實(shí)例:

(\d{1,3}\.){3}\d{1,3}

上面是一個(gè)簡單的ip匹配正則表達(dá)式。由小括號(hào)包裹的內(nèi)容會(huì)被作為一個(gè)獨(dú)立的邏輯域進(jìn)行操作。
分組的作用:
在正則表達(dá)式中,分組具有舉足輕重的作用,下面就簡單對它的功能做一下簡單的介紹。

一.起到原始的分組作用:

把單獨(dú)的項(xiàng)目進(jìn)行分組,以便合成子表達(dá)式,這樣就可以像處理一個(gè)單獨(dú)的字符那樣,對其應(yīng)用|、+、*或者?等元字符來操作它們。
實(shí)例代碼如下:

var str="I love javascript and java";
console.log(str.match(/java(script)?/gi));

由以上代碼的運(yùn)行結(jié)果可以看出,正則表達(dá)式既可以匹配字符串javascript也可以匹配java,這是因在正則表達(dá)式中采用了分組,并且使用重復(fù)量詞?,可以使前面的子表達(dá)式重復(fù)0次或者1次。

二.定義子模式:

分組另一個(gè)非常重要的作用就是在完整的模式中定義子模式。
當(dāng)一個(gè)正則表達(dá)式成功的和目標(biāo)字符串相匹配時(shí),可以從目標(biāo)字符串中抽出和小括號(hào)中字表達(dá)式相匹配的部分。
假如我們匹配的是以一個(gè)數(shù)字開頭的后面跟著一個(gè)或者多個(gè)不區(qū)分大小寫的字母的字符串,正則表達(dá)式可以這樣寫:

/\d[a-zA-Z]+/

假如我們真正關(guān)心和需要的是開頭的數(shù)字,那么就可以將正則表達(dá)式的數(shù)字部分放入小括號(hào)就可以從檢索到的匹配中抽取數(shù)字.

/(\d)[a-zA-Z]+/

三.引用子表達(dá)式:
正則表達(dá)語法中可以在同一個(gè)表達(dá)式中的后部引用前面的子表達(dá)式。這是通過在"\"后面跟隨數(shù)字實(shí)現(xiàn)的。此數(shù)字指定了小括號(hào)字表達(dá)式在正則表達(dá)式中的位置,例如\1是引用的第一個(gè)帶有圓括號(hào)的子表達(dá)式,自然\2就是第二個(gè)帶有圓括號(hào)的子表達(dá)式。
特別注意:由于子表達(dá)式是可以相互嵌套的,那么計(jì)算子表達(dá)式的位置的時(shí)候,只要確定左括號(hào)的位置即可。例如:

/(java(script))/

在以上正則表達(dá)式中,嵌套的子表示是可以用\2表示。
對于子表達(dá)式的引用,并不是引用的匹配模式,而是對子表示匹配內(nèi)容的引用。一般來說對子表達(dá)式的引用一般是用來實(shí)施一條約束,看下面的代碼:

/(['"])[^'"]*\1/

通常情況下左右引號(hào)是相匹配的,如果前面是雙引號(hào),那么結(jié)尾也要是雙引號(hào),前面是單引號(hào)那么結(jié)尾也必須是單引號(hào),并且字符串中間不能夠再出現(xiàn)其他的引號(hào),例如:

"腳本之家歡迎您"
'腳本之家歡迎您'

那么上面的正則表達(dá)式就實(shí)現(xiàn)此功能,當(dāng)前面的子表達(dá)式匹配單引號(hào)的時(shí)候,那么后面的\1也就表示的是單引號(hào),如果子表示匹配的雙引號(hào),那么后面的\2就表示的是雙引號(hào)。
非引用型分組:
分組會(huì)占用一定的系統(tǒng)資源,尤其是正則表達(dá)式較長的時(shí)候會(huì)降低匹配速度。有時(shí)候僅僅是為了設(shè)置一個(gè)分組,并不需要引用,那么使用非引用類型分組將會(huì)是一個(gè)良好的選擇。

/(java(?:script))/

以上正則就是使用非引用分組,只要在左括號(hào)后面加上一個(gè)?:即可。

您可能感興趣的文章:
  • 正則表達(dá)式學(xué)習(xí)教程之回溯引用backreference詳解
  • Python正則表達(dá)式分組概念與用法詳解
  • javascript正則表達(dá)式中分組詳解
  • 正則表達(dá)式、分組、子匹配(子模式)、非捕獲子匹配(子模式)
  • 正則表達(dá)式之分組的回溯引用問題

標(biāo)簽:湖州 哈密 常州 大興安嶺 泰安 ???/a> 涼山 本溪

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《正則表達(dá)式分組實(shí)例詳解》,本文關(guān)鍵詞  正則,表達(dá)式,分組,實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《正則表達(dá)式分組實(shí)例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于正則表達(dá)式分組實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    利辛县| 班戈县| 蕉岭县| 夏津县| 乐平市| 临夏市| 梓潼县| 遂昌县| 和龙市| 桑日县| 西安市| 陈巴尔虎旗| 珲春市| 清河县| 博白县| 墨竹工卡县| 昌宁县| 泾源县| 瑞金市| 乐清市| 新余市| 平顺县| 成都市| 潜山县| 双流县| 武清区| 甘德县| 江永县| 西宁市| 舒城县| 吉木乃县| 德昌县| 海口市| 云和县| 泰安市| 莫力| 翼城县| 开封县| 罗江县| 红桥区| 越西县|