偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

正則表達(dá)式組詳解

開發(fā) 后端
正則表達(dá)式組是什么呢?這里通過向你介紹正則表達(dá)式組和向后應(yīng)用的理解向你滲透解析,希望對你理解正則表達(dá)式組有所幫助。

正則表達(dá)式組與向后引用的關(guān)系是什么呢?我們在學(xué)習(xí)正則表達(dá)式組的時(shí)候需要注意什么呢?那么這里我們來詳細(xì)的看看具體的到底有什么是關(guān)鍵點(diǎn)。

正則表達(dá)式組的理解

把正則表達(dá)式的一部分放在圓括號(hào)內(nèi),你可以將它們形成組。然后你可以對整個(gè)組使用一些正則操作,例如重復(fù)操作符。

要注意的是,只有圓括號(hào)“()”才能用于形成組?!癧]”用于定義字符集?!皗}”用于定義重復(fù)操作。

當(dāng)用“()”定義了一個(gè)正則表達(dá)式組后,正則引擎則會(huì)把被匹配的組按照順序編號(hào),存入緩存。當(dāng)對被匹配的組進(jìn)行向后引用的時(shí)候,可以用“\數(shù)字”的方式進(jìn)行引用。﹤﹤\1﹥﹥引用***個(gè)匹配的后向引用組,﹤﹤\2﹥﹥引用第二個(gè)組,以此類推,﹤﹤\n﹥﹥引用第n個(gè)組。而﹤﹤\0﹥﹥則引用整個(gè)被匹配的正則表達(dá)式本身。我們看一個(gè)例子。

假設(shè)你想匹配一個(gè)HTML標(biāo)簽的開始標(biāo)簽和結(jié)束標(biāo)簽,以及標(biāo)簽中間的文本。比如﹤B﹥This is a test﹤/B﹥,我們要匹配﹤B﹥和﹤/B﹥以及中間的文字。我們可以用如下正則表達(dá)式:“﹤([A-Z][A-Z0-9]*)[^﹥]*﹥.*?﹤/\1﹥”

首先,“﹤”將會(huì)匹配“﹤B﹥”的***個(gè)字符“﹤”。然后[A-Z]匹配B,[A-Z0-9]*將會(huì)匹配0到多次字母數(shù)字,后面緊接著0到多個(gè)非“﹥”的字符。***正則表達(dá)式的“﹥”將會(huì)匹配“﹤B﹥”的“﹥”。接下來正則引擎將對結(jié)束標(biāo)簽之前的字符進(jìn)行惰性匹配,直到遇到一個(gè)“﹤/”符號(hào)。然后正則表達(dá)式中的“\1”表示對前面匹配的組“([A-Z][A-Z0-9]*)”進(jìn)行引用,在本例中,被引用的是標(biāo)簽名“B”。所以需要被匹配的結(jié)尾標(biāo)簽為“﹤/B﹥”

正則表達(dá)式組的相關(guān)解析:

你可以對相同的后向引用組進(jìn)行多次引用,﹤﹤([a-c])x\1x\1﹥﹥將匹配“axaxa”、“bxbxb”以及“cxcxc”。如果用數(shù)字形式引用的組沒有有效的匹配,則引用到的內(nèi)容簡單的為空。

一個(gè)后向引用不能用于它自身。﹤﹤([abc]\1)﹥﹥是錯(cuò)誤的。因此你不能將﹤﹤\0﹥﹥用于一個(gè)正則表達(dá)式匹配本身,它只能用于替換操作中。

后向引用不能用于字符集內(nèi)部。﹤﹤(a)[\1b]﹥﹥中的﹤﹤\1﹥﹥并不表示后向引用。在字符集內(nèi)部,﹤﹤\1﹥﹥可以被解釋為八進(jìn)制形式的轉(zhuǎn)碼。

向后引用會(huì)降低引擎的速度,因?yàn)樗枰鎯?chǔ)匹配的組。如果你不需要向后引用,你可以告訴引擎對某個(gè)組不存儲(chǔ)。例如:﹤﹤Get(?:Value)﹥﹥。其中“(”后面緊跟的“?:”會(huì)告訴引擎對于組(Value),不存儲(chǔ)匹配的值以供后向引用。

正則表達(dá)式組之重復(fù)操作與后向引用

當(dāng)對組使用重復(fù)操作符時(shí),緩存里后向引用內(nèi)容會(huì)被不斷刷新,只保留***匹配的內(nèi)容。例如:﹤﹤([abc]+)=\1﹥﹥將匹配“cab=cab”,但是﹤﹤([abc])+=\1﹥﹥卻不會(huì)。因?yàn)?[abc])***次匹配“c”時(shí),“\1”代表“c”;然后([abc])會(huì)繼續(xù)匹配“a”和“b”。***“\1”代表“b”,所以它會(huì)匹配“cab=b”。

應(yīng)用:檢查重復(fù)單詞--當(dāng)編輯文字時(shí),很容易就會(huì)輸入重復(fù)單詞,例如“the the”。使用﹤﹤\b(\w+)\s+\1\b﹥﹥可以檢測到這些重復(fù)單詞。要?jiǎng)h除第二個(gè)單詞,只要簡單的利用替換功能替換掉“\1”就可以了。

正則表達(dá)式組的命名和引用

在PHP,Python中,可以用﹤﹤(?P﹤name﹥group)﹥﹥來對組進(jìn)行命名。在本例中,詞法?P﹤name﹥就是對組(group)進(jìn)行了命名。其中name是你對組的起的名字。你可以用(?P=name)進(jìn)行引用。

.NET的命名組

.NET framework也支持命名組。不幸的是,微軟的程序員們決定發(fā)明他們自己的語法,而不是沿用Perl、Python的規(guī)則。目前為止,還沒有任何其他的正則表達(dá)式實(shí)現(xiàn)支持微軟發(fā)明的語法。

下面是.NET中的例子:

(?﹤first﹥group)(?’second’group)

正如你所看到的,.NET提供兩種詞法來創(chuàng)建命名組:一是用尖括號(hào)“﹤﹥”,或者用單引號(hào)“’’”。尖括號(hào)在字符串中使用更方便,單引號(hào)在ASP代碼中更有用,因?yàn)锳SP代碼中“﹤﹥”被用作HTML標(biāo)簽。

要引用一個(gè)命名組,使用\k﹤name﹥或\k’name’.

當(dāng)進(jìn)行搜索替換時(shí),你可以用“${name}”來引用一個(gè)命名組。

正則表達(dá)式組的相關(guān)內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習(xí)正則表達(dá)式組有所幫助。

【編輯推薦】

  1. 實(shí)現(xiàn)正則表達(dá)式匹配任意字符解析
  2. 淺析正則表達(dá)式實(shí)現(xiàn)字符串的相關(guān)操作
  3. Java正則表達(dá)式實(shí)現(xiàn)條件查詢淺析
  4. 正則表達(dá)式匹配單詞細(xì)節(jié)解析
  5. 正則表達(dá)式的選擇符探討
責(zé)任編輯:仲衡 來源: 百度空間
相關(guān)推薦

2009-09-16 16:22:04

正則表達(dá)式匹配

2009-09-16 17:29:30

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

2009-08-03 17:27:14

C#正則表達(dá)式

2024-10-17 17:03:43

SQL正則表達(dá)式MySQL

2011-08-16 17:28:49

iPhone SDK正則表達(dá)式

2011-08-23 17:46:09

LUA正則表達(dá)式模式

2009-09-16 14:32:43

PHP正則表達(dá)式替換

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機(jī)

2018-09-27 15:25:08

正則表達(dá)式前端

2009-09-16 14:22:44

preg_match正

2019-07-25 17:00:44

Python正則表達(dá)式字符串

2024-09-14 09:18:14

Python正則表達(dá)式

2016-11-10 16:21:22

Java 正則表達(dá)式

2009-09-16 17:15:57

正則表達(dá)式引擎

2022-01-04 11:35:03

Linux Shel正則表達(dá)式Linux

2023-09-13 08:12:45

2009-08-20 16:23:32

C#正則表達(dá)式語法

2017-05-12 10:47:45

Linux正則表達(dá)式程序基礎(chǔ)

2022-03-28 06:19:14

正則表達(dá)式開發(fā)

2009-02-18 09:48:20

正則表達(dá)式Java教程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)