佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 淺談?wù)齽t表達(dá)式中的分組和引用實(shí)現(xiàn)方法

淺談?wù)齽t表達(dá)式中的分組和引用實(shí)現(xiàn)方法

熱門標(biāo)簽:團(tuán)購網(wǎng)站 電子圍欄 科大訊飛語音識別系統(tǒng) 服務(wù)器配置 Linux服務(wù)器 阿里云 Mysql連接數(shù)設(shè)置 銀行業(yè)務(wù)

問題

在外刊君讀者群中看到有人提出這樣的一個需求:

把字符串切成連續(xù)相同字符的正則怎么寫?比如abbcccdddd切成a,bb,ccc,dddd

之前我對正則表達(dá)式也是略有研究,想嘗試一下。其實(shí)我對正則表達(dá)式的學(xué)習(xí)基本完全來源于犀牛書的第10章,真正看懂這一章,我覺得操作正則表達(dá)式應(yīng)該不在話下。

我的答案

先給出我的答案吧:

'abbccddd'.match(/(\w)\1*/g) // ["a", "bb", "cc", "ddd"]

說明

拿到這個問題,首先要匹配字符[a-zA-Z0-9],這里直接使用\w。然后是全局匹配,在最后加上g。難點(diǎn)在于怎么判斷重復(fù)。

翻看了犀牛書后,又讀了一遍分組和引用的部分。使用小括號()將字符作為一個最小單元,同時小括號還能記憶這個組合相匹配的字符串。再使用反斜杠\引用前面分組的表達(dá)式,數(shù)字1表示第一個小括號。這時完成了2個字符重復(fù)的要求。最后再使用*來匹配出現(xiàn)0次或n次。這個正則表達(dá)式就寫完了。

下面詳細(xì)說說分組和引用。

正則表達(dá)式的選擇、分組和引用字符表

字符 含義
| 選擇,匹配的是該符號左邊的子表達(dá)式或右邊的子表達(dá)式
(...) 組合,將幾個項(xiàng)組合為一個單元,這個單元可通過* + ? | 等符號加以修飾,而且可以記住和這個組合相匹配的字符串以提供伺候的引用使用
(?:...) 只組合,把項(xiàng)組合到一個段元,但不記憶與該組相匹配的字符
\n 和第n個分組第一次匹配的字符相匹配,組是圓括號中的子表達(dá)式(也有可能是嵌套的),組索引是從左到右的左括號數(shù),(?:形式的分組不編碼

這篇文章就介紹到這了,希望大家以后多多支持腳本之家。

您可能感興趣的文章:
  • 正則表達(dá)式之分組的回溯引用問題
  • 詳解JavaScript正則表達(dá)式之分組匹配及反向引用
  • 正則表達(dá)式分組與引用的使用

標(biāo)簽:衢州 廣元 棗莊 大理 衡水 萍鄉(xiāng) 蚌埠 江蘇

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談?wù)齽t表達(dá)式中的分組和引用實(shí)現(xiàn)方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    北辰区| 酉阳| 衢州市| 西昌市| 张北县| 体育| 禄丰县| 宜昌市| 原阳县| 襄垣县| 东乡族自治县| 西青区| 东方市| 凤阳县| 三江| 临海市| 兖州市| 绵阳市| 广宗县| 鄱阳县| 隆昌县| 鄂尔多斯市| 新邵县| 刚察县| 西乡县| 门源| 忻城县| 思南县| 江孜县| 罗山县| 阿巴嘎旗| 江城| 广丰县| 泾源县| 盐亭县| 武强县| 墨脱县| 大石桥市| 开江县| 临洮县| 乌恰县|