最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

正則表達(dá)式學(xué)習(xí)教程之回溯引用backreference詳解

 更新時(shí)間:2017年01月07日 14:47:50   作者:MikanMu  
這篇文章主要介紹了正則表達(dá)式學(xué)習(xí)教程之回溯引用backreference,結(jié)合實(shí)例形式詳細(xì)分析了回溯引用的概念、功能及實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了正則表達(dá)式回溯引用backreference。分享給大家供大家參考,具體如下:

在所有例子中正則表達(dá)式匹配結(jié)果包含在源文本中的【和】之間,有的例子會(huì)使用Java來(lái)實(shí)現(xiàn),如果是java本身正則表達(dá)式的用法,會(huì)在相應(yīng)的地方說(shuō)明。所有java例子都在JDK1.6.0_13下測(cè)試通過(guò)。

一、問(wèn)題引入

一個(gè)在HTML頁(yè)面中匹配標(biāo)題標(biāo)簽(H1—H6)的問(wèn)題:

文本:

<body>
<h1>Welcome to my page</H1>
Content is divided into twosections:<br>
<h2>Introduction</h2>
Information about me.
<H2>Hobby</H2>
Information about my hobby.
<h2>This is invalid HTML</h3>
</body>

正則表達(dá)式:<[hH][1-6]>.*?</[hH][1-6]>

結(jié)果:

<body>
【<h1>Welcome to my page</H1>】
Content is divided into twosections:<br>
【<h2>Introduction</h2>】
Information about me.
【<H2>Hobby</H2>】
Information about my hobby.
【<h2>This is invalid HTML</h3>】
</body>

分析:模式<[hH][1-6]>匹配任何一級(jí)標(biāo)題的開始標(biāo)簽,而且不區(qū)分大小寫,在這個(gè)例子中它匹配到了<h1>、<h2>,</[hH][1-6]>匹配到了</h1>、</h2>、</h3>;這里使用了懶惰型元字符來(lái)匹配標(biāo)簽中的文本,否則會(huì)匹配到從第一個(gè)開始標(biāo)簽到最后一下結(jié)束標(biāo)簽之間的內(nèi)容。但是從結(jié)果可以看出,有一個(gè)無(wú)效的標(biāo)簽也匹配上了,即<h2></h3>,它們根本不能配對(duì)。要解決這個(gè)問(wèn)題,就需要使用到回溯引用(backreference)。

二、回溯引用匹配

回溯引用是指模式的后半部分引用在前半部分中定義的子表達(dá)式。至于子表達(dá)式的使用、劃分和引用,在前面已經(jīng)介紹過(guò)了?,F(xiàn)在來(lái)解決前面的例子:

文本:

<body>
<h1>Welcome to my page</H1>
Content is divided into twosections:<br>
<h2>Introduction</h2>
Information about me.
<H2>Hobby</H2>
Information about my hobby.
<h2>This is invalid HTML</h3>
</body>

正則表達(dá)式:<[hH]([1-6])>.*?</[hH]\1>

結(jié)果:

<body>
【<h1>Welcome to my page</H1>】
Content is divided into twosections:<br>
【<h2>Introduction</h2>】
Information about me.
【<H2>Hobby</H2>】
Information about my hobby.
<h2>This is invalid HTML</h3>

分析:首先匹配開始標(biāo)題標(biāo)簽的模式<[hH]([1-6])>,使用括號(hào)把[1-6]做為子表達(dá)式,而匹配結(jié)束標(biāo)題標(biāo)簽?zāi)J綖?lt;/[hH]\1>,其中\(zhòng)1表示引用第一個(gè)子表達(dá)式,即([1-6]),如果([1-6])匹配到的是1,那\1也匹配到1,如果匹配到2,那\1也匹配到2,所以最后一個(gè)無(wú)效的標(biāo)題標(biāo)簽就不會(huì)被匹配到了。

PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:

JavaScript正則表達(dá)式在線測(cè)試工具:
http://tools.jb51.net/regex/javascript

正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript正則表達(dá)式技巧大全》、《JavaScript替換操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 精確查找PHP WEBSHELL木馬 修正版

    精確查找PHP WEBSHELL木馬 修正版

    上篇提到了關(guān)于網(wǎng)上流傳查找PHP webshell的python腳本中,不嚴(yán)謹(jǐn)?shù)拇a,并且給出了一個(gè)python的檢測(cè)代碼,同時(shí),下文里也提到不能檢測(cè)到反引號(hào)的命令執(zhí)行的地方。今天,我想了下,現(xiàn)在把思路發(fā)出來(lái)。
    2011-04-04
  • VSCode正則表達(dá)式匹配多行實(shí)戰(zhàn)案例

    VSCode正則表達(dá)式匹配多行實(shí)戰(zhàn)案例

    正則表達(dá)式是一種強(qiáng)大的文本模式匹配工具,可以用來(lái)搜索和修改文本,下面這篇文章主要給大家介紹了關(guān)于VSCode正則表達(dá)式匹配多行實(shí)戰(zhàn)案例的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • IOS正則表達(dá)式判斷輸入類型(整理)

    IOS正則表達(dá)式判斷輸入類型(整理)

    在開發(fā)過(guò)程中,有時(shí)需要對(duì)用戶輸入的類型做判斷,最常見是在注冊(cè)頁(yè)面即用戶名和密碼。接下來(lái)通過(guò)本文給大家分享IOS正則表達(dá)式判斷輸入類型,一起學(xué)習(xí)吧
    2017-01-01
  • 正則表達(dá)式匹配不包含某些字符串的技巧

    正則表達(dá)式匹配不包含某些字符串的技巧

    這篇文章主要介紹了正則表達(dá)式匹配不包含某些字符串的技巧,詳細(xì)分解了應(yīng)該怎么做和這么做的原因,需要的朋友可以參考下
    2014-07-07
  • 常用的正則表達(dá)式集錦

    常用的正則表達(dá)式集錦

    正則式太難學(xué),而且容易忘記,很多不太懂正則的朋友,在遇到需要用正則校驗(yàn)數(shù)據(jù)時(shí),往往是在網(wǎng)上去找很久,結(jié)果找來(lái)的還是不很符合要求。所以我最近把開發(fā)中常用的一些正則表達(dá)式整理了一下,在這里分享一下。自己做個(gè)記錄,也給朋友們做個(gè)參考。
    2015-06-06
  • 36個(gè)正則表達(dá)式(開發(fā)效率提高80%)

    36個(gè)正則表達(dá)式(開發(fā)效率提高80%)

    我們?cè)谌粘5腏ava開發(fā)中,經(jīng)常需要處理一些字符串,本文主要介紹了36個(gè)常用正則表達(dá)式,感興趣的可以了解一下
    2021-11-11
  • 正則表達(dá)式使用示例詳解

    正則表達(dá)式使用示例詳解

    正則表達(dá)式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為"元字符")。這篇文章重點(diǎn)給大家介紹正則表達(dá)式使用示例,感興趣的朋友一起看看吧
    2019-05-05
  • javascript中使用正則表達(dá)式進(jìn)行字符串驗(yàn)證示例

    javascript中使用正則表達(dá)式進(jìn)行字符串驗(yàn)證示例

    我寫的一個(gè)表達(dá)式驗(yàn)證示例:功能如下:用戶名,不能為空;密碼6為數(shù)字;密碼確認(rèn),兩次輸入密碼必須相同;身份證號(hào)碼必須是15位,或者是18位,最末尾也可以是X
    2013-05-05
  • 詳解正則表達(dá)式實(shí)現(xiàn)二代身份證號(hào)碼驗(yàn)證

    詳解正則表達(dá)式實(shí)現(xiàn)二代身份證號(hào)碼驗(yàn)證

    這篇文章主要介紹了正則表達(dá)式實(shí)現(xiàn)二代身份證號(hào)碼驗(yàn)證的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • php 正則 不包含某字符串的正則表達(dá)式

    php 正則 不包含某字符串的正則表達(dá)式

    這篇文章主要介紹了判斷一個(gè)字符串中是否含有另一字符串,php有很多方法
    2009-09-09

最新評(píng)論

文成县| 华宁县| 澎湖县| 建平县| 黔西县| 乌拉特中旗| 高阳县| 酉阳| 涞水县| 扎囊县| 万载县| 澄城县| 晴隆县| 阿勒泰市| 余姚市| 渝中区| 黄骅市| 荔浦县| 高雄县| 澄江县| 河间市| 道真| 东兴市| 民丰县| 安塞县| 澄迈县| 定州市| 沭阳县| 紫阳县| 昭通市| 中西区| 济源市| 西充县| 甘谷县| 萨迦县| 马龙县| 宾川县| 蒙自县| 论坛| 奈曼旗| 纳雍县|