国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript 正則表達式分組、斷言詳解

2024-05-06 15:18:17
字體:
來源:轉載
供稿:網友

 javascript 正則表達式分組、斷言詳解

  提示:閱讀本文需要有一定的正則表達式基礎。

       正則表達式中的斷言,作為高級應用出現,倒不是因為它有多難,而是概念比較抽象,不容易理解而已,今天就讓小菜通俗的講解一下。

       如果不用斷言,以往用過的那些表達式,僅僅能獲取到有規律的字符串,而不能獲取無規律的字符串。

       舉個例子,比如html源碼中有<title>xxx</title>標簽,用以前的知識,我們只能確定源碼中的<title>和</title>是固定不變的。因此,如果想獲取頁面標題(xxx),充其量只能寫一個類似于這樣的表達式:<title>.*</title>,而這樣寫匹配出來的是完整的<title>xxx</title>標簽,并不是單純的頁面標題xxx。

       想解決以上問題,就要用到斷言知識。

       在講斷言之前,讀者應該先了解分組,這有助于理解斷言。

       分組在正則中用()表示,根據小菜理解,分組的作用有兩個:

       n  將某些規律看成是一組,然后進行組級別的重復,可以得到意想不到的效果。

       n  分組之后,可以通過后向引用簡化表達式。

        先來看第一個作用,對于IP地址的匹配,簡單的可以寫為如下形式:

       /d{1,3}./d{1,3}./d{1,3}./d{1,3}

       但仔細觀察,我們可以發現一定的規律,可以把./d{1,3}看成一個整體,也就是把他們看成一組,再把這個組重復3次即可。表達式如下:

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

       這樣一看,就比較簡潔了。

再來看第二個作用,就拿匹配<title>xxx</title>標簽來說,簡單的正則可以這樣寫:

       <title>.*</title>

       可以看出,上邊表達式中有兩個title,完全一樣,其實可以通過分組簡寫。表達式如下:

       <(title)>.*<//1>

       這個例子實際上就是反向引用的實際應用。對于分組而言,整個表達式永遠算作第0組,在本例中,第0組是<(title)>.*<//1>,然后從左到右,依次為分組編號,因此,(title)是第1組。

       用/1這種語法,可以引用某組的文本內容,/1當然就是引用第1組的文本內容了,這樣一來,就可以簡化正則表達式,只寫一次title,把它放在組里,然后在后邊引用即可。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 永川市| 嵩明县| 股票| 班玛县| 科技| 灵川县| 应城市| 仁布县| 汝阳县| 凤山县| 元阳县| 呼和浩特市| 清水河县| 阿拉善盟| 吉安县| 广元市| 武强县| 萝北县| 新民市| 白水县| 靖宇县| 仁化县| 深州市| 津南区| 德保县| 界首市| 高邑县| 磐石市| 成安县| 晋江市| 利川市| 安顺市| 仁怀市| 新泰市| 福州市| 沙湾县| 太湖县| 沐川县| 双流县| 夏河县| 屏南县|