日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则基础之——反向引用

發布時間:2023/12/9 编程问答 78 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则基础之——反向引用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

From: http://blog.csdn.net/lxcnn/article/details/4476746


1?????? ?概述

捕獲組捕獲到的內容,不僅可以在正則表達式外部通過程序進行引用,也可以在正則表達式內部進行引用,這種引用方式就是反向引用。要了解反向引用,首先要了解捕獲組,關于捕獲組,參考 正則基礎之——捕獲組(capture group)。

反向引用的作用通常是用來查找或限定重復、查找或限定指定標識配對出現等等。

對于普通捕獲組和命名捕獲組的引用,語法如下:

普通捕獲組反向引用:\k<number>,通常簡寫為\number

命名捕獲組反向引用:\k<name>或者\k'name'

普通捕獲組反向引用中number是十進制的數字,即捕獲組的編號;命名捕獲組反向引用中的name為命名捕獲組的組名。

2?????? 反向引用匹配原理

捕獲組(Expression)在匹配成功時,會將子表達式匹配到的內容,保存到內存中一個以數字編號的組里,可以簡單的認為是對一個局部變量進行了賦值,這時就可以通過反向引用方式,引用這個局部變量的值。一個捕獲組(Expression)在匹配成功之前,它的內容可以是不確定的,一旦匹配成功,它的內容就確定了,反向引用的內容也就是確定的了。

反向引用必然要與捕獲組一同使用的,如果沒有捕獲組,而使用了反向引用的語法,不同語言的處理方式不一致,有的語言會拋異常,有的語言會當作普通的轉義處理。

2.1???? 從一個簡單例子說起

源字符串:abcdebbcde

正則表達式:([ab])\1

對于正則表達式“([ab])\1”,捕獲組中的子表達式“[ab]”雖然可以匹配“a”或者“b”,但是捕獲組一旦匹配成功,反向引用的內容也就確定了。如果捕獲組匹配到“a”,那么反向引用也就只能匹配“a”,同理,如果捕獲組匹配到的是“b”,那么反向引用也就只能匹配“b”。由于后面反向引用“\1”的限制,要求必須是兩個相同的字符,在這里也就是“aa”或者“bb”才能匹配成功。

考察一下這個正則表達式的匹配過程,在位置0處,由“([ab])”匹配“a”成功,將捕獲的內容保存在編號為1的組中,然后把控制權交給“\1”,由于此時捕獲組已記錄了捕獲內容為“a”,“\1”也就確定只有匹配到“a”才能匹配成功,這里顯然不滿足,“\1”匹配失敗,由于沒有可供回溯的狀態,整個表達式在位置0處匹配失敗。

正則引擎向前傳動,在位置5之前,“([ab])”一直匹配失敗。傳動到位置5處時,,“([ab])”匹配到“b”,匹配成功,將捕獲的內容保存在編號為1的組中,然后把控制權交給“\1”,由于此時捕獲組已記錄了捕獲內容為“b”,“\1”也就確定只有匹配到“b”才能匹配成功,滿足條件,“\1”匹配成功,整個表達式匹配成功,匹配結果為“bb”,匹配開始位置為5,結束位置為7。

擴展一下,正則表達式“([a-z])\1{2}”也就表達連續三個相同的小寫字母。

2.2???? 一個復雜例子的分析

詳細的分析討論參考:正則表達式正向預搜索的問題。

源字符串:aaa bbbb ffffff 999999999

正則表達式:(\w)((?=\1\1\1)(\1))+

測試代碼:

string test = "aaa bbbb ffffff 999999999";

Regex reg = new Regex(@"(\w)((?=\1\1\1)(\1))+");

MatchCollection mc = reg.Matches(test);

foreach (Match m in mc)

{

????? richTextBox2.Text += "匹配結果:" + m.Value.PadRight(12, ' ') + "匹配開始位置:" + m.Index + "\n";

}

//輸出

匹配結果:bb????????? 匹配開始位置:4

匹配結果:ffff??????? 匹配開始位置:9

匹配結果:9999999???? 匹配開始位置:16

匹配結果分析:

正則表達式(\w)((?=\1\1\1)(\1))+從匹配結果上分析,其實就等價于 (\w)(\1)*(?=\1\1\1)(\1) ,這個會相對好理解一些,下面討論下分析過程。

因為“+”等價于“{1,}”,表示至少匹配1次,下面把子表達式“((?=\1\1\1)(\1))+”展開來看下規律,下表中的“次數”表示子表達式“((?=\1\1\1)(\1))+”匹配成功的次數 。

次數

等價表達式

1

(\w)((?=\1\1\1)(\1))

2

(\w)((?=\1\1\1)(\1))((?=\1\1\1)(\1))

3

(\w)((?=\1\1\1)(\1))((?=\1\1\1)(\1))((?=\1\1\1)(\1))

如果最后一個“((?=\1\1\1)(\1))”匹配成功,那么中間的“((?=\1\1\1)(\1))”一定可以匹配成功,所以中間的限制條件(?=\1\1\1)就沒有意義了,這時就可以簡寫為“(\1)”,也就是

次數

等價表達式

1

(\w)((?=\1\1\1)(\1))

2

(\w)(\1)((?=\1\1\1)(\1))

3

(\w)(\1)(\1)((?=\1\1\1)(\1))

可以歸納為等價于

(\w)(\1)*((?=\1\1\1)(\1))

因為“((?=\1\1\1)(\1))”開始和結尾的()原來是用作量詞+修飾范圍的,這里已經沒有什么意義了,所以表達式最后可以歸納為等價于

(\w)(\1)*(?=\1\1\1)(\1)

分析這個表達式就容易多了。“(\w)”匹配一個字符,占一位,“\1”是對“\w”匹配內容的引用,“(\1)*”可以匹配0到無窮多個“(\w)”匹配到的字符,“(?=\1\1\1)(\1)”只占一位,但是“(?=\1\1\1)”要求所在位置右側有三個連續相同的“(\w)”匹配到的字符,所以在“(?=\1\1\1)”這個位置右側應該有三個字符,不過只有這個位置右側的一個字符計入最后的匹配結果,最后兩個只作為限制條件,不計入最后的匹配結果 。

以“999999999”為例,第一個“9”由“(\w)”匹配,第二到第六個“9”由“(\1)*”來匹配,第七個“9”由“(?=\1\1\1)(\1)”中最后的“(\1)”來匹配,而第七、八、九這三個“9”是用來保證滿足“(?=\1\1\1)”這個條件的。

2.3???? 反向引用的編號

對于普通捕獲組的反向引用,是通過捕獲組的編號來實現的,那么對于一些可能存在歧義的語法又是如何解析的呢?對于正則表達式

([ab])\10

這里的“\10”會被解析成第10個捕獲組的反向引用,還是第1個捕獲組的反向引用加一個普通字符“0”呢?不同語言的處理方式是不一樣的。

string test = "ab0cdebb0cde";

richTextBox2.Text = Regex.Match(test, @"([ab])\10").Value;

在.NET中,以上測試代碼輸出為空,說明這里的“\10”被解析成第10個捕獲組的反向引用,而這個表達式中是不存在第10個捕獲組的,所以匹配結果為空。

<scripttype="text/javascript"> var str = "ab0cdebb0cde"; var reg = /([ab])\10/; var arr = str.match(reg); if(arr != null) { ??? document.write(arr[0]); } </script>

/*--------輸出--------

bb0

*/

而在JavaScript中,由于瀏覽器解析引擎的不同,得到的結果也不一樣,以上為IE下是可以得到匹配結果“bb0”,說明在IE的瀏覽器引擎中,“\10”被解析成第1個捕獲組的反向引用加一個普通字符“0”。而在Firefox、Opera等瀏覽器中,得到的結果為空,說明“\10”被解析成第10個捕獲組的反向引用,而這個表達式中是不存在第10個捕獲組的。

string test = "ab0cdebb0cde";

richTextBox2.Text = Regex.Match(test, @"([ab])\10", RegexOptions.ECMAScript).Value;

/*--------輸出--------

bb0

*/

而在.NET中,如果正則表達式加了RegexOptions.ECMAScript參數,則這里的“\10”被解析成第1個捕獲組的反向引用加一個普通字符“0”。

至于正則表達式中確實有10個以上的捕獲組時,“\10”的具體意義留給有興趣的讀者去測試了,因為在實際應用當中,如果你的正則表達式中用到了10個以上捕獲組,而同時又用到了第10個以上捕獲組的反向引用時,就要注意分析一下,你的正則是否需要進行優化,甚至于這里是否適合使用正則表達式了。

出于對現實應用場景的分析,第10個以上捕獲組的反向引用幾乎不存在,對它的研究通常僅存在于理論上。而對于10個以內捕獲組反向引用后面還有數字,容易造成混淆的情況,可以通過非捕獲組來解決。

([ab])\1(?:0)

這樣就可以明確,是對第1個捕獲組的反向引用,后面跟一個普通字符“0”。也就不會產生混淆了。

string test = "ab0cdebb0cde";

richTextBox2.Text = Regex.Match(test, @"([ab])\1(?:0)").Value;

/*--------輸出--------

bb0

*/

而事實上,即使是這樣用的場景也非常少,至今為止,只在日期正則表達式中用到過。

^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\2(?:29))$

這一節討論的內容,了解一下就可以了,在實際應用當中,如果遇到,注意一下不要出現混淆而導致匹配結果錯誤就可以了。

3?????? 反向引用應用場景分析

反向引用的作用通常是用來查找或限定重復、查找或限定指定標識配對出現等等。以下以實例進行場景分析及應用講解。

3.1???? 查找重復

查找重復通常的應用場景是查找或驗證源字符串中,是否有重復單詞、重復項等等。

3.1.1? 驗證數字元素重復項

需求描述:

驗證源字符串中以“,”分隔的數字是否有重復項。

代碼實現:

string[] test = new string[] { "1,2,3,123,32,13", "12,56,89,123,56,98", "8,2,9,10,38,29,2,9", "8,3,9,238,93,23" };

Regex reg = new Regex(@"\b(\d+)\b.*?\b\1\b");

foreach (string s in test)

{

???? richTextBox2.Text += "源字符串: " + s.PadRight(20, ' ') + "驗證結果: " + reg.IsMatch(s) + "\n";

}

/*--------輸出--------

源字符串: 1,2,3,123,32,13???? 驗證結果: False

源字符串: 12,56,89,123,56,98? 驗證結果: True

源字符串: 8,2,9,10,38,29,2,9? 驗證結果: True

源字符串: 8,3,9,238,93,23???? 驗證結果: False

*/

源字符串的規則比較明確,就是用“,”分隔的數字,類似于這種查找是否有重復的需求,最簡單的就是用反向引用來解決了。

由于要驗證的是用“,”分隔的元素的整體是否有重復,所以“(\d+)”兩側的“\b”就是必須的,用來保證取到的數字子串是一個元素整體,而不是“123”中的“1”,當然,這里前后兩個“\b”分別換成“(?<!\d)”和“(?!\d)”是一個效果,可能意義上更明確。后面的兩個“\b”也是一樣的作用。

3.1.2? 驗證連續數字是否有重復

參考 問兩個正則表達式。

需求描述:

數據:

1985aaa1985bb

bcae1958fiefadf1955fef

atijc1944cvkd

df2564isdjfef2564d

實現1:匹配第一次出現的四個數字.然后后面也存在這四個數字的

如:

1985aaa1985bb

第一次出現的四個數字是1985.然后后面也存在這四個數字,所以這個匹配

bcae1958fiefadf1955fef

第一次出現的四個數字是1958.然后后面不存在這四個數字.所以不匹配

-----

所以實現1.應該匹配

1985aaa1985bb

df2564isdjfef2564d

代碼實現:

//如果是驗證第一個出現的連續4個數字是否有重復

string[] test = new string[] { "1985aaa1985bb", "bcae1958fiefadf1955fef", "atijc1944cvkd", "df2564isdjfef2564d", "abc1234def5678ghi5678jkl" };

Regex reg = new Regex(@"^(?:(?!\d{4}).)*(\d{4})(?:(?!\1).)*\1");

foreach (string s in test)

{

???? richTextBox2.Text += "源字符串:? " + s.PadRight(25, ' ') + "驗證結果:? " + reg.IsMatch(s) + "\n";

}

/*--------輸出--------

源字符串:? 1985aaa1985bb??????????? 驗證結果:? True

源字符串:? bcae1958fiefadf1955fef?? 驗證結果:? False

源字符串:? atijc1944cvkd??????????? 驗證結果:? False

源字符串:? df2564isdjfef2564d?????? 驗證結果:? True

源字符串:? abc1234def5678ghi5678jkl 驗證結果:? False

*/

由于需求要求驗證第一次出現的四個數字是否有重復,所以這里需要用“^(?:(?!\d{4}).)*(\d{4})”來保證捕獲組取得的是第一次出現的四個數字。

這樣寫可能有些復雜,可讀性較差,但這里需要用這種順序環視結合貪婪模式,來達到匹配第一次出現的四個數字的目的,而不能使用非貪婪模式.

對于使用非貪婪模式的正則“^.*?(\d{4})(?:(?!\1).)*\1”,可以看一下它匹配的結果。

string[] test = new string[] { "1985aaa1985bb", "bcae1958fiefadf1955fef", "atijc1944cvkd", "df2564isdjfef2564d", "abc1234def5678ghi5678jkl" };

Regex reg = new Regex(@"^.*?(\d{4})(?:(?!\1).)*\1");

foreach (string s in test)

{

???? richTextBox2.Text += "源字符串:? " + s.PadRight(25, ' ') + "驗證結果:? " + reg.IsMatch(s) + "\n";

}

/*--------輸出--------

源字符串:? 1985aaa1985bb??????????? 驗證結果:? True

源字符串:? bcae1958fiefadf1955fef?? 驗證結果:? False

源字符串:? atijc1944cvkd??????????? 驗證結果:? False

源字符串:? df2564isdjfef2564d?????? 驗證結果:? True

源字符串:? abc1234def5678ghi5678jkl 驗證結果:? True

*/

是的,最后一項的驗證結果也是“True”,為什么會這樣?當捕獲組“(\d{4})”匹配到“1234”時,由于“1234”沒有重復,所以后面的子表達式匹配失敗,此時“.*?”會進行回溯,放棄當前狀態,繼續向前匹配,直到它匹配到“5678”前的“f”,由捕獲組“(\d{4})”匹配到“5678”,后面的子表達式可以匹配成功,報告整個表達式匹配成功。

NFA引擎在有可供回溯的狀態時,會一直嘗試直到所有可能都嘗試失敗后才報告失敗。上例中非貪婪模式在繼續嘗試時是可以找到匹配成功的位置的,而采用貪婪模式的正則“^(?:(?!\d{4}).)*(\d{4})”,由于“^(?:(?!\d{4}).)*”匹配到的內容不可能是連續的四個數字,所以無論怎么回溯,接下來的“(\d{4})”都不可能匹配成功,一直回溯到起始位置“^”,報告整個表達式匹配失敗。

而后面的順序環視+貪婪模式子表達式“(?:(?!\1).)*”則不存在以上問題,所以在源字符串比較簡單時可以寫作“.*?”,不會影響匹配結果。

而對于驗證任意位置是否存在四個重復數字,則不需要加起始位置的限定。

//如果是驗證任意位置出現的連續4個數字是否有重復,可以用我38樓的正則

string[] test = new string[] { "1985aaa1985bb", "bcae1958fiefadf1955fef", "atijc1944cvkd", "df2564isdjfef2564d", "abc1234def5678ghi5678jkl" };

Regex reg = new Regex(@"(\d{4})(?:(?!\1).)*\1");

foreach (string s in test)

{

???? richTextBox2.Text += "源字符串:? " + s.PadRight(25, ' ') + "驗證結果:? " + reg.IsMatch(s) + "\n";

}

/*--------輸出--------

源字符串:? 1985aaa1985bb??????????? 驗證結果:? True

源字符串:? bcae1958fiefadf1955fef?? 驗證結果:? False

源字符串:? atijc1944cvkd??????????? 驗證結果:? False

源字符串:? df2564isdjfef2564d?????? 驗證結果:? True

源字符串:? abc1234def5678ghi5678jkl 驗證結果:? True

*/

3.2???? 限定指定標識配對

相對于查找重復來說,查找或指定標識配對出現這種應用場景要更多一些。尤其是對于HTML的處理中,這種應用更普遍。

3.2.1? 限定標點配對

由于HTML語言的不規范性,導致以下三種寫法可以被解析。

1.?? <a href=www.csdn.net>CSDN</a>

2.?? <a href='www.csdn.net'>CSDN</a>

3.?? <a href="www.csdn.net">CSDN</a>

而這對于一些需要進行字符串解析的應用,造成很大的麻煩。在提取鏈接時,雖然兩側都用“[‘”]?”通常也可以得到正確結果,卻不如用反向引用來得嚴謹、方便。

Regex reg = new Regex(@"(?is)<a(?:(?!href=).)*href=(['""]?)(?<url>[^""'\s>]*)\1[^>]*>(?<text>(?:(?!</a>).)*)</a>");

MatchCollection mc = reg.Matches(yourStr);

foreach (Match m in mc)

{

???? richTextBox2.Text += m.Groups["url"].Value + "\n";

???? richTextBox2.Text += m.Groups["text"].Value + "\n";

}

/*--------輸出--------

www.csdn.net

CSDN

www.csdn.net

CSDN

www.csdn.net

CSDN

*/

以下可以正確解析出三種形式的HTML代碼中的鏈接和文本,下面把正則改一下

Regex reg = new Regex(@"(?is)<a(?:(?!href=).)*href=(['""])?(?<url>[^""'\s>]*)\1[^>]*>(?<text>(?:(?!</a>).)*)</a>");

看到區別了嗎?只是把“([‘””]?)”改成了“([‘””])?”,結果會怎么樣呢?

Regex reg = new Regex(@"(?is)<a(?:(?!href=).)*href=(['""])?(?<url>[^""'\s>]*)\1[^>]*>(?<text>(?:(?!</a>).)*)</a>");

MatchCollection mc = reg.Matches(yourStr);

foreach (Match m in mc)

{

???? richTextBox2.Text += m.Groups["url"].Value + "\n";

???? richTextBox2.Text += m.Groups["text"].Value + "\n";

}

/*--------輸出--------

www.csdn.net

CSDN

www.csdn.net

CSDN

*/

結果只取到了兩組數據。這是因為對于情況1的HTML字符串,在“([‘””]?)”這種情況下,捕獲組雖然匹配到的只是一個位置,但畢竟是匹配成功了,所以可以用“\1”進行反向引用;而改成“([‘””])?”,捕獲組根本就沒有進行匹配,所以也就無法進行反向引用。

當然,對于HTML來說,還有一些比較復雜的情況,如

<a href="javascript:alert(1 > 2)"/>

這種復雜情況涉及到的場景比較少,通常應用可以不予以考慮,否則考慮的場景太復雜,會影響匹配效率。寫正則的一個一般原則就是,適用就好。這種場景如果遇到,需求根據具體情況,是否需要提取等進行分析,根據分析結果不同,寫出的正則也是不一樣的。

3.2.2????????? 限定標簽配對

這種應用一般是在取某幾個特定標簽,或是動態生成正則表達式時用到。

需求描述:

刪除<script…>…</script>與<style…>…</style>標簽及其中間的內容。

代碼實現:

Regex reg = new Regex(@"(?is)<(script|style)\b[^>]*>(?(?!\1\b).)*</\1>");

string result = reg.Replace(yourStr, "");

因為這里要刪除的標簽不止一個,所以事先無法確定是哪個標簽,需要用到反向引用來限定標簽的配對。

當然,對于標簽有嵌套的情況,就要用到平衡組了。可以參考 .NET正則基礎之——平衡組。

3.2.3? 取配對標簽中的內容

需求描述:

[id]5554323[id!][destid]10657302023180404[destid!][srcterminalid]13518841197[srcterminalid!][msgcontent]好的[msgcontent!][receivetime]20090409165217[receivetime!]

源字符串中標簽成對出現,無嵌套,分別提取標簽和對應的內容。

代碼實現:

string test = "[id]5554323[id!][destid]10657302023180404[destid!][srcterminalid]13518841197[srcterminalid!][msgcontent]好的[msgcontent!][receivetime]20090409165217[receivetime!]";

Regex reg = new Regex(@"(?s)\[([^\]]+)\]((?:(?!\[\1).)*)\[\1!\]");

MatchCollection mc = reg.Matches(test);

foreach (Match m in mc)

{

???? richTextBox2.Text += "Tag: " + m.Groups[1].Value.PadRight(20, ' ') + "Content: " + m.Groups[2].Value + "\n";

}

/*--------輸出--------

Tag: id????????????????? Content: 5554323

Tag: destid????????????? Content: 10657302023180404

Tag: srcterminalid?????? Content: 13518841197

Tag: msgcontent????????? Content: 好的

Tag: receivetime???????? Content: 20090409165217

*/

這種需求通常是由捕獲組匹配到一個標簽,然后向后匹配,直到與之配對的標簽外為止,根據源字符串的特點,中間可以使用非貪婪模式,也可以使用順序否定環視+貪婪模式。

3.3???? 反向引用的綜合應用

3.3.1? ?12位數字,其中不能出現6位連續相同數字

需求描述:

只允許12位數字,并且其中不能出現6位連續相同數字。

例如,123456789012是允許的,而123333334567是不允許的。

正則表達式:^(?:([0-9])(?!\1{5})){12}$

類似這種需要判定是否有連續相同元素的需求,其實也是驗證重復,也要用到反向引用。

說下分析過程,需求分解一下:

1、 一個數字

2、 它后面不能連續出現5個與它相同的數字

3、 滿足以上兩條的字符一共12個

那么根據需求分解寫出相應的正則:

1、([0-9])

2、(?!\1{5})

3、.{12}

將以上三個分解后得出的正則,按需求邏輯關系,組合一下:

(([0-9])(?!\1{5})){12}

由于是驗證整個字符串的規則,所以開始和結束標識“^”和“$”是少不了的,不需要用捕獲組的地方,用非捕獲代替,也就成了最后滿足需求的正則:

^(?:([0-9])(?!\1{5})){12}$

其實這個例子的分析過程,也是一些正則問題解析的通用過程,先把復雜的需求由整到零的分解,再各個實現,然后把實現的正則由零到整,考慮一下相互間的邏輯關系,基本上就可以得出正確的正則表達式了。

3.3.2? ?A-Z以內不重復的10個字母

需求描述:A-Z以內不重復的10個字母

正則表達式1:^(?:([A-Z])(?!.*?\1)){10}$

正則表達式2:^(?:([A-Z])(?=((?!\1).)*$)){10}$

這個需求與上一個需求類似,分析過程也差不多。其實這個問題如果用正則來實現,思路是非常清晰的 。

首先因為是驗證規則,所以“^”和“$”是必不可少的,分別匹配開始和結束的位置 。

然后是10個字母,那么([A-Z]){10},合起來就是^([A-Z]){10}$ 。

最后就是加一個規則,字母不能重復 。

如何保證不能重復,必然是用到反向引用 ,(一個字母)后面任意一個字母不能與這個字母重復,這樣實現起來就有兩種方式,當然,實質都是一樣的

實現方式一:^(?:([A-Z])(?!.*?\1)){10}$

實現方式二:^(?:([A-Z])(?=(?:(?!\1).)*$)){10}$

在這個需求當中,由于可能出現的源字符串不會太長,也不會太復雜,所以這兩個正則表達式在匹配效率上不會有明顯的差異。

解釋一下正則的含義,先解釋一下方式一的正則:

^(?:([A-Z])(?!.*?\1)){10}$

^”和“$”分別匹配開始和結束位置,“{10}”為量詞,表示修飾的子串重復10次。

(?:Expression)”是非捕獲組,目的是不將“()”內的“Expression”匹配的內容保存到內存中,之所以要這樣用,是因為后面的反向引用使用的是“\1”,如果不用非捕獲組,那么“([A-Z])”就是編號為2的捕獲組,后面的“\1”就要換成“\2”,來引用第二個捕獲組,替換后對匹配結果當然不會有什么影響,但由于由“(([A-Z])(?!.*?\1))”捕獲的內容我們并不關心,所以還是用非捕獲組,可以提升匹配效率。

([A-Z])”就是匹配A到Z之間的任意一個字母,并保存匹配結果到捕獲組中。

(?!.*?\1)”順序環視,它是零寬度的,雖然進行匹配,但不保存匹配結果,可以理解為它就是在所在位置的右側附加了一個條件,用在這里表示,它所在位置的右側,不管間隔多少個字符,都不能出現之前匹配到的那個字符,也就是不能有重復的字母出現。

(?:([A-Z])(?!.*?\1)){10}”就是匹配到這樣一個字符 :

1、它首先是一個字母;

2、然后這個字母的右側間隔任意多個字符,不能再出現同樣的字母;

3、最后,符合以上兩條規則的字符,一共有10個。

加上首尾限定字符“^”和“$”,就是滿足需求的正則。

接下來討論一下方式二的正則:

^(?:([A-Z])(?=(?:(?!\1).)*$)){10}$

思路和以及其余部分子表達式與方式一完全一樣 ,只有“(?=(?:(?!\1).)*$)”這里不同,這個子表達式表示,它所在位置右側,一直到結尾,都不能是之前匹配到的那個字符。方式一是非貪婪模式的實現,而這個就是貪婪模式的實現。

這里需要用到順序肯定環視“(?=Expression)”,而不能用非捕獲組“(?:(?:(?!\1).)*$)”,是因為這里的表達式不能占有字符,只能作為條件存在,由量詞“{10}”修飾的子表達式最終只能匹配一個字符,否則就無法限定長度了。

3.3.3? ?提取指定單元長度字符串

需求描述 參考 求一正則表達式(c# ):

例如有字符串 string str = "w1w2w3w2w3w1w3w2w4w5w4w5w4w4w5w4w2w4w3w4w3w2w6w5w6w5w6w4w7",找出有且僅有兩個單元(w+數字作為一個單元,例如:w1,w2)組成的長度大于等于4個單元的字串(必須包括這兩個單元),這個例子,應輸出:"w2w3w2w3","w4w5w4w5w4w4w5w4","w4w3w4w3","w6w5w6w5w6"

如果找出有且僅有三個單元長度大于等于6個單元的字串,該如何寫正則表達式?

代碼實現:

//第一個需求,兩單元的

string str = "w7w7w7w5w7w1w2w3w2w3w1w3w2w4w5w4w5w4w4w5w4w2w4w3w4w3w2w6w5w6w5w6w4w7w7w7w5w7";

MatchCollection mc = Regex.Matches(str, @"(?i)(?=(w\d)\1*(w\d))(?:\1|\2){4,}");

foreach (Match m in mc)

{

???? richTextBox2.Text += m.Value + "\n";

}

/*--------輸出--------

bb0w7w7w7w5w7

w2w3w2w3

w4w5w4w5w4w4w5w4

w4w3w4w3

w6w5w6w5w6

w4w7w7w7

*/

//第二個需求,三單元的

string str = "w7w7w7w5w7w1w2w3w2w3w1w3w2w4w5w4w5w4w4w5w4w2w4w3w4w3w2w6w5w6w5w6w4w7w7w7w5w7";

MatchCollection mc = Regex.Matches(str, @"(?i)(?=(w\d)\1*(w\d)(?:\1|\2)*(w\d))(?:\1|\2|\3){6,}");

foreach (Match m in mc)

{

???? richTextBox2.Text += m.Value + "\n";

}

/*--------輸出--------

bb0w7w7w7w5w7w1

w2w3w2w3w1w3w2

w4w5w4w5w4w4w5w4w2w4

w2w6w5w6w5w6

w4w7w7w7w5w7

*/

這個實例可以認為是環視和反向引用綜合運用的一個經典實例。主要是用到了環視零寬度,不占有字符的特性,先由環視來取得規定單元的捕獲組的內容,再通過反向引用來進行實際的匹配。



總結

以上是生活随笔為你收集整理的正则基础之——反向引用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品久久久久久999 | 国产精品一区二区果冻传媒 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 色综合久久99 | 国产精品一区二区在线看 | 精品国产乱码久久久久久1区2匹 | 精品视频中文字幕 | 亚洲欧洲国产日韩精品 | 国产成人久久久久 | 狠狠干干 | 日韩精品视频在线免费观看 | 日韩r级电影在线观看 | 日本久久久久久久久久 | 日韩午夜一级片 | 18久久久久久 | 欧亚日韩精品一区二区在线 | 亚洲人成在线电影 | 美女视频网 | 免费观看视频黄 | 色九九在线 | 欧美精品久久 | 免费a级大片 | 成人国产精品一区 | 久久成人在线 | 久av在线 | 91av视频在线观看 | 国产精品视频免费观看 | 久久久久久久久久久久国产精品 | 中文在线 | 天堂av网站 | 精品视频 | 日韩首页 | 青青久草在线视频 | 夜夜干夜夜 | 伊人永久在线 | 成人国产在线 | 超碰成人网 | 少妇bbb好爽 | 亚洲精品视频www | av色图天堂网 | 国产综合婷婷 | 亚洲五月综合 | 色综合久久天天 | 国产高清久久久 | 在线免费色视频 | 国产精品乱码久久久 | 狠狠干成人 | 国产精品久久久久久久久久不蜜月 | av不卡网站 | 色天天综合久久久久综合片 | www日韩高清 | 久草在线免费看视频 | 日韩网站在线免费观看 | 黄色字幕网| 一区二区三区不卡在线 | 国产一级在线免费观看 | 久久电影中文字幕视频 | 久草网视频| 日韩在线视频网站 | 日本天天色 | 最新日韩中文字幕 | 中文字幕在线观看免费观看 | 亚洲综合在线一区二区三区 | 久草网站在线 | 国产精品福利久久久 | 97国产超碰| 亚洲午夜久久久久久久久 | 天天操天天操天天操天天操天天操天天操 | 国产精品毛片一区视频播不卡 | 三上悠亚一区二区在线观看 | 久久首页| 中文字幕a∨在线乱码免费看 | 国产精品视频内 | 亚洲精品国产综合久久 | 91精品视频在线看 | 国产精品美女视频网站 | www.夜夜操| 国产91在线 | 美洲 | 久久激五月天综合精品 | 日韩精品免费一区二区 | 欧美色一色 | 综合久久综合久久 | 2019中文| 免费福利视频网站 | 成人精品在线 | 国产免费观看视频 | 99在线观看免费视频精品观看 | 黄色成年 | 亚洲精品视频网址 | 久久99在线视频 | 亚洲精品乱码久久久久久蜜桃不爽 | 9999亚洲| 右手影院亚洲欧美 | 亚洲精品动漫成人3d无尽在线 | 国产黄色在线看 | 97福利在线 | 91麻豆精品久久久久久 | 丁香视频在线观看 | 亚洲精品乱码久久久一二三 | 免费观看的黄色片 | 深爱五月激情五月 | 亚洲精品国产精品国 | 久久激情精品 | 99在线热播精品免费 | 九九热在线精品视频 | 午夜久久影院 | 日韩中文字幕电影 | 在线一区二区三区 | 99 久久久久 | 992tv又爽又黄的免费视频 | 九九九热精品 | a天堂最新版中文在线地址 久久99久久精品国产 | 欧美激情精品一区 | 又黄又刺激的网站 | 人人狠狠综合久久亚洲婷 | 亚洲丝袜一区 | 欧美韩国日本在线观看 | 伊人热| 在线 国产 亚洲 欧美 | 午夜久操| 99精品免费久久久久久久久日本 | 亚洲精品影院在线观看 | 91精品国产92久久久久 | 国产精品激情偷乱一区二区∴ | 亚洲天堂网在线视频 | 夜夜爽天天爽 | 欧美一级在线看 | 超碰人人草人人 | 国产精品久久久久久久久久久杏吧 | 亚洲国产视频网站 | 国产精品久久久久久五月尺 | 久久黄页| 一区二区三区免费播放 | 午夜在线观看一区 | 成年人国产在线观看 | 天天做天天爱天天爽综合网 | 91九色在线观看视频 | 91九色视频在线观看 | 在线成人小视频 | 麻豆影视在线播放 | 欧美日韩在线免费观看 | 欧美日韩亚洲第一页 | 亚洲高清在线视频 | 热99久久精品| 成人在线视频论坛 | 日韩免费电影网站 | 成人理论在线观看 | 国产精品成人久久久久 | 日韩精品免费在线观看视频 | 综合成人在线 | 欧美视频在线观看免费网址 | 久草.com| 婷婷电影在线观看 | 成人免费视频观看 | 国产精品一区二区三区观看 | 国产精品久久久久久久久久久久午 | 天天草天天摸 | 日韩av成人在线 | 怡红院久久 | 日韩av免费观看网站 | 国模视频一区二区三区 | 成人黄色在线看 | 久久国产精品免费视频 | 国产美女久久久 | 三级av在线| 狠狠五月天| 免费精品 | 狠狠插狠狠干 | 亚洲国产精品成人va在线观看 | 欧美在线日韩在线 | 久久久国产精品人人片99精片欧美一 | 日韩欧美视频在线免费观看 | 视频一区二区国产 | 中文字幕在线看视频 | 99草视频在线观看 | 99视频在线精品国自产拍免费观看 | 日韩精品不卡 | 日日躁夜夜躁xxxxaaaa | 亚洲精品国产精品国自产观看浪潮 | 中文在线8资源库 | 国产亚洲视频在线免费观看 | 免费在线激情电影 | 亚洲砖区区免费 | 中文字幕第一页在线视频 | 中文字幕av电影下载 | 亚洲国产精品99久久久久久久久 | 日韩二区三区在线观看 | 日韩午夜av | 69视频在线播放 | 国产亚洲精品久久久久秋 | 午夜的福利 | 成人免费xxxxxx视频 | 在线观看视频在线观看 | 久久黄色免费观看 | av电影免费在线看 | 伊人中文在线 | 久久国产精品免费看 | 97福利在线 | 中文字幕首页 | 丁香花中文字幕 | 国产高清成人 | 日韩欧美xxx | 精品国产伦一区二区三区观看说明 | 在线观看亚洲精品视频 | 中文字幕在线一二 | 久久久免费观看完整版 | 国产一级片直播 | 国产日韩欧美视频在线观看 | 国产免费亚洲 | 波多野结衣一区二区三区中文字幕 | 欧美大片第1页 | 精品国产一区在线观看 | 国产精品色婷婷视频 | 韩国视频一区二区三区 | 久黄色 | 久久国产精品免费一区 | 精品福利国产 | 91久久偷偷做嫩草影院 | 国产黄色成人av | 91粉色视频 | 亚洲精品视频一 | 色搞搞| 精品xxx| 日韩精品首页 | 96av麻豆蜜桃一区二区 | 欧美一级性生活视频 | 99精品福利视频 | 91高清在线 | 午夜精品久久久久久久久久 | 91大神免费视频 | 亚洲精品99久久久久久 | 黄色大全免费观看 | 911久久香蕉国产线看观看 | 中文字幕欧美日韩va免费视频 | 国产高清视频在线播放一区 | 亚洲国产精品电影 | 久久久污 | 国产精品日韩久久久久 | 久久视频免费在线观看 | 免费高清在线观看电视网站 | 色姑娘综合网 | 日本bbbb摸bbbb | 色综合久久综合中文综合网 | 久久首页 | 国产精品一区二区三区在线播放 | 久9在线| 色五月色开心色婷婷色丁香 | av在线中文 | 高清免费av在线 | 欧美久久影院 | 欧美一区免费在线观看 | 午夜影院一级片 | 亚洲国产精品人久久电影 | 999国内精品永久免费视频 | 欧美日韩精品在线一区二区 | 亚洲国产日韩欧美在线 | 黄色精品网站 | 综合色天天| 在线国产视频一区 | 激情图片qvod | 精品在线亚洲视频 | av电影在线观看完整版一区二区 | 日韩两性视频 | 中文字幕黄色网址 | 国产高清视频免费在线观看 | 亚洲好视频| 午夜精品久久久99热福利 | 最近的中文字幕大全免费版 | 国产高清视频免费 | 日日夜夜国产 | 久久久久久久久久久久久国产精品 | 久久夜色精品国产欧美乱 | 国产精品久久一卡二卡 | 亚洲成av片人久久久 | 成人高清在线观看 | 亚洲午夜久久久久久久久电影网 | 91久久国产露脸精品国产闺蜜 | 久久久久这里只有精品 | 天天天操天天天干 | 久久精品老司机 | 国产传媒一区在线 | 久草资源免费 | 久久午夜影院 | 日日射天天射 | 免费精品国产va自在自线 | 日韩欧美精品在线视频 | 国产成人精品一区二三区 | 成人黄色中文字幕 | 日日夜夜精品免费视频 | www欧美xxxx | 在线观看香蕉视频 | 色婷婷国产 | 免费福利在线观看 | 国产一卡久久电影永久 | 中文一二区 | 日韩在线观看精品 | 在线观看片 | 中文字幕在线看视频国产中文版 | 日韩精品视频一二三 | 久久久久亚洲精品 | 亚洲国产成人在线 | 久久国产精品久久精品 | 免费看黄20分钟 | 久久久久久国产一区二区三区 | 天无日天天操天天干 | 亚洲精品美女久久久久 | 丁香婷婷色综合亚洲电影 | 91试看| 国产成人精品在线观看 | 在线观看www视频 | 免费看的黄色 | 欧美影片 | 日韩啪啪小视频 | 欧美天天干 | 中文字幕在线看视频 | 日韩理论电影网 | 精品免费观看 | 久久久久免费网站 | 天天骚夜夜操 | 91成熟丰满女人少妇 | 欧美地下肉体性派对 | 国产精品久久久久久久久久免费 | 日日干精品 | 中文字幕一区二区三区四区视频 | 最新99热 | 色视频网页 | 天天操天天色天天 | 一区电影 | 超碰人人草人人 | 欧美粗又大 | 91资源在线 | 天天躁天天操 | 日韩精品中文字幕一区二区 | 久久国产精品久久国产精品 | 懂色av懂色av粉嫩av分享吧 | 欧美激情片在线观看 | 亚洲成人影音 | 国产婷婷在线观看 | 国产一区二区三区免费在线 | 国产精品久久久久国产精品日日 | 国产青草视频在线观看 | 天天综合视频在线观看 | 波多野结衣综合网 | 日韩精品久久久免费观看夜色 | 97精品欧美91久久久久久 | 中国老女人日b | 亚洲精品久久久久中文字幕二区 | 色综合久久久网 | 色综合久久五月天 | 久久久亚洲精华液 | 91人人爽人人爽人人精88v | 国产精品嫩草影院99网站 | 欧美日韩国产一区 | 深夜福利视频在线观看 | 欧美日韩精品在线视频 | 亚洲永久精品一区 | 二区三区在线视频 | 中国一级片免费看 | 国产精品午夜免费福利视频 | 中文字幕大全 | 中文字幕亚洲字幕 | www.久久婷婷 | 五月情婷婷 | 98超碰在线观看 | 天天综合导航 | 免费在线观看av不卡 | 国产精品视屏 | 免费成人在线观看视频 | 亚洲视频免费在线观看 | 在线观看国产亚洲 | 久久成人国产精品一区二区 | 97中文字幕 | 欧美日韩国产一区二区在线观看 | 夜夜骑天天操 | 婷婷在线免费 | 97在线免费观看视频 | 中文字幕一区二区三区久久蜜桃 | 日日夜夜精品免费视频 | 欧美性极品xxxx娇小 | 久久经典国产视频 | 美女网站在线免费观看 | 日韩视频1区 | 久草a在线| av一级片| 午夜狠狠操 | 久久综合久久88 | 九九久久影院 | 奇米7777狠狠狠琪琪视频 | 最新国产精品久久精品 | 人人干人人模 | 在线国产日本 | 99色婷婷| 九九精品久久 | 91自拍成人 | 国产精品原创av片国产免费 | 天天看天天操 | 亚洲精品永久免费视频 | 久久99精品久久久久蜜臀 | 精品视频久久久久久 | 三级a视频 | 一区二区精品国产 | 夜夜骑日日操 | 一区二区三区四区精品 | 久久福利综合 | 国产五月天婷婷 | 久久久鲁 | www在线观看视频 | 成人在线免费视频 | 国产日韩视频在线观看 | 免费的成人av | 午夜精品一区二区三区视频免费看 | 久久视频在线视频 | 免费精品视频在线观看 | 欧美电影在线观看 | 日韩在线 | 园产精品久久久久久久7电影 | 高清av免费一区中文字幕 | 久久99精品国产麻豆宅宅 | 三上悠亚在线免费 | 97超碰国产在线 | 中文字幕三区 | 91精品伦理 | 人人草人人草 | 国产日韩av在线 | 日韩欧美综合在线视频 | 免费成人在线视频网站 | 天天天天干| 国产小视频免费观看 | 久久国产精品精品国产色婷婷 | 国产九色在线播放九色 | 91成人亚洲| 在线免费观看国产视频 | 激情中文字幕 | 中文亚洲欧美日韩 | 国产操在线 | 日本一区二区免费在线观看 | 成年人视频在线免费 | 激情综合色播五月 | 国产精品九九九 | 国产精品久久久免费看 | 色综久久 | av中文在线| 久久精品国产免费看久久精品 | 日本xxxx.com | 99精品视频在线观看播放 | 91天堂在线观看 | 狠狠干2018 | www.啪啪.com | 中文字幕人成乱码在线观看 | 欧美日韩后 | 91xav| 国内精品中文字幕 | 91视频免费观看 | 在线亚洲成人 | 欧美精品少妇xxxxx喷水 | 国产午夜精品福利视频 | 91精品视频免费 | 五月天色网站 | 97超碰成人 | 午夜视频不卡 | 色偷偷中文字幕 | 波多野结衣视频一区 | 亚洲作爱 | 亚洲一区动漫 | 极品美女被弄高潮视频网站 | 99久精品 | 99免费看片 | 国产成人久久精品77777 | 亚洲欧美国产日韩在线观看 | 九九免费在线视频 | 亚洲清纯国产 | 一区二区三区手机在线观看 | 国产高清在线免费观看 | 狠狠干网站 | 亚洲视频精品在线 | 国产日韩视频在线观看 | www.伊人网 | 美女网站色在线观看 | 伊人永久 | 国产精品免费一区二区 | 日韩特黄一级欧美毛片特黄 | 黄色一级免费网站 | 国产精品精品国产 | 免费黄色a级毛片 | 蜜臀久久99精品久久久无需会员 | 国产欧美精品一区二区三区四区 | 国产精品美女视频 | 日韩电影中文字幕在线观看 | 欧美黑人巨大xxxxx | 99热这里只有精品在线观看 | 久久99亚洲精品久久久久 | 蜜臀av性久久久久蜜臀av | 啪啪资源| 亚洲精品美女在线观看 | 亚洲午夜在线视频 | 韩国av一区二区 | 国产视频二区三区 | 久久久久麻豆v国产 | 欧美最猛性xxxxx亚洲精品 | 成人a免费看 | 五月天久久综合网 | 久久一级片 | 亚洲精品国产成人 | 日本午夜在线亚洲.国产 | 黄网站app在线观看免费视频 | 国产一区在线免费 | 中文字幕日韩有码 | 一区二区三区不卡在线 | 国产视频在线观看一区 | 午夜的福利 | 91av蜜桃| 碰天天操天天 | 在线观看视频你懂的 | 色综合天天狠天天透天天伊人 | 国产精品久久久久影视 | 国产99视频在线观看 | 亚洲国产精品人久久电影 | 亚洲成a人片77777kkkk1在线观看 | 国产免费不卡av | 九九九热 | 日韩高清免费无专码区 | 深爱婷婷激情 | 在线免费观看一区二区三区 | 国产日产在线观看 | 色综合天天做天天爱 | 狠狠狠狠狠狠狠狠 | 久精品一区 | 五月天激情在线 | 精品免费99久久 | 成人av资源网 | 国产婷婷视频在线 | 亚洲精品小视频 | 99久久99久国产黄毛片 | 久久国产三级 | 最近日韩中文字幕中文 | 天天色天天综合网 | 国产最新网站 | 97在线观看免费高清 | 国产精品6| 五月天婷婷综合 | 久久久国产精品一区二区三区 | 久久国产影院 | 91精品久| 久久免费看a级毛毛片 | 激情五月在线视频 | av网站有哪些 | 国产在线第三页 | 最近高清中文字幕在线国语5 | 久久调教视频 | 爱爱av在线 | 韩国三级av在线 | 黄色小说免费在线观看 | 婷婷深爱| 在线日本看片免费人成视久网 | 婷婷av电影 | 欧美福利视频一区 | 日日摸日日添日日躁av | 国产亚洲日 | 欧美激情精品久久久久久 | 开心激情五月网 | 欧美韩国日本在线 | 日日夜夜狠狠干 | 日本99热| 97精品超碰一区二区三区 | 九九九国产 | 免费高清在线观看电视网站 | 欧美日韩国产三级 | 黄色a视频免费 | 亚洲综合色丁香婷婷六月图片 | 久影院 | 国产麻豆精品在线观看 | 成人国产亚洲 | 丝袜+亚洲+另类+欧美+变态 | 国产精品理论视频 | 成人毛片a | 新av在线| 91丨九色丨91啦蝌蚪老版 | 亚洲黄色一级电影 | 狠狠五月天| 99视频99| 一区二区三区在线观看免费视频 | 日韩精品一区二区三区丰满 | 免费在线观看一区二区三区 | 久久久一本精品99久久精品 | 日韩成人免费电影 | 成人亚洲网 | 国产97碰免费视频 | 国产精品久久久久久久久久久久午夜 | 性色av免费看| 91av福利视频| 久久综合九色综合97_ 久久久 | 欧美色图亚洲图片 | 久久视频这里有久久精品视频11 | 精品一区三区 | 久久久久久久久精 | 亚洲欧洲一区二区在线观看 | 国产精品久久久久一区二区三区共 | 97国产大学生情侣白嫩酒店 | 婷婷九九 | 久草在线免 | 99在线精品免费视频九九视 | 日韩精品黄| 日韩免费网站 | 黄色亚洲免费 | 天天曰 | 国产人免费人成免费视频 | 午夜私人影院久久久久 | www.国产毛片| 国产精品久久久久一区二区三区 | 日韩美女一级片 | 九九热中文字幕 | 国产成人精品久久久久 | 六月丁香伊人 | 国产丝袜美腿在线 | 黄色片视频免费 | 日韩欧美视频一区 | 99久久精品免费看国产免费软件 | 97在线观看免费观看 | 美女视频a美女大全免费下载蜜臀 | 日韩av高潮 | 亚洲精品国产精品国 | 日韩毛片在线一区二区毛片 | 久久99免费 | 看v片 | 人人涩 | 日本久久91 | 久久精品亚洲一区二区三区观看模式 | 91大神dom调教在线观看 | 亚洲一区美女视频在线观看免费 | 久久免费看视频 | 免费毛片aaaaaa | 日韩簧片在线观看 | 激情网五月婷婷 | 99久久精品视频免费 | 久久久美女 | 国产精品综合av一区二区国产馆 | 国产一区视频在线观看免费 | 久久免费视频在线 | 精品伊人久久久 | www.午夜色.com | 久久激五月天综合精品 | 久久久国产精华液 | 国产尤物视频在线 | 欧美aaa一级| 91探花系列在线播放 | 日本99热| 97色婷婷成人综合在线观看 | 久久99精品久久久久婷婷 | 中文字幕日本在线观看 | 精品久久久精品 | 久久久国产精品亚洲一区 | 国产精品综合久久久久久 | 91大神dom调教在线观看 | 日韩av不卡在线观看 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 天天色棕合合合合合合 | 欧美激情精品久久久久久变态 | 日韩av电影免费在线观看 | 另类老妇性bbwbbw高清 | 日韩免费看视频 | 91精品国产九九九久久久亚洲 | 欧美成人一二区 | 欧美大香线蕉线伊人久久 | 欧美另类巨大 | 久久精品99国产精品酒店日本 | 精品国产观看 | www五月天| 精品国产三级a∨在线欧美 免费一级片在线观看 | 日日夜夜精品 | 激情片av | 亚洲伊人成综合网 | 狠狠色狠狠色 | 激情综合网五月激情 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 欧美91精品久久久久国产性生爱 | av网站在线观看免费 | 日韩高清在线不卡 | 天天拍天天色 | 日韩欧美电影在线 | 国产精品国产亚洲精品看不卡15 | av在线com| 黄色片免费电影 | 久久综合久久综合久久综合 | 国产成人在线观看 | 青青网视频 | 中文字幕电影网 | 91超级碰| 天天操夜夜操夜夜操 | 午夜精品久久久久久中宇69 | 国产品久精国精产拍 | 国产一级片一区二区三区 | 午夜免费久久看 | 精品av在线播放 | a级片韩国 | 日韩两性视频 | 热久精品 | 九九精品毛片 | 国产一区观看 | 国产福利91精品一区二区三区 | 91探花在线视频 | 久久久久一区二区三区 | 免费99精品国产自在在线 | 久久综合九色综合欧美狠狠 | 精品999国产 | 日日干网 | 18国产精品白浆在线观看免费 | 亚洲网站在线 | 国产精品 日韩 | 综合色站| 97福利社| 天天爽夜夜爽人人爽曰av | 国产a国产a国产a | 免费99视频 | a视频在线观看免费 | 日日夜夜天天 | 日韩欧美在线观看一区二区 | 天天干干 | 久久久久影视 | 狠狠干天天| 少妇高潮冒白浆 | 久久免费看av | 久久精品综合一区 | 国产在线视频一区二区三区 | www,黄视频| 久久久午夜影院 | 99精品色 | 免费在线成人av电影 | 国产经典三级 | 六月丁香社区 | 日韩激情在线 | 久久最新网址 | 日日操日日操 | 91麻豆传媒 | 亚洲欧美日韩一二三区 | 免费视频久久久 | 五月天激情综合 | 天天干天天射天天操 | 超碰免费在线公开 | 亚洲一区二区精品3399 | 中文字幕av免费 | 精品在线一区二区三区 | 91av在线国产 | 成人一级免费视频 | 97精品超碰一区二区三区 | 日韩久久在线 | 69欧美视频 | 999成人网| 亚洲v欧美v国产v在线观看 | 免费黄色在线播放 | 三级av在线免费观看 | 国产成人精品久久久 | 亚洲天堂网站视频 | 日韩一三区 | 久久不射电影网 | 国产成人精品久 | 日韩三级中文字幕 | 亚州欧美精品 | 蜜臀久久99精品久久久久久网站 | 中文字幕一区二区三区在线观看 | 国产精品色婷婷视频 | 亚洲免费国产视频 | 国产一区在线精品 | 国产91综合一区在线观看 | 亚洲www天堂com | 国产成人av在线 | 日本最新中文字幕 | 色综合久久88色综合天天6 | 国产美女免费视频 | 久久国内视频 | 日韩成人免费观看 | 欧美9999 | 成人在线观看影院 | 久草网站在线 | 亚洲高清国产视频 | 99精品一区二区三区 | 亚洲国产精品成人va在线观看 | 狂野欧美激情性xxxx | 亚洲国产精久久久久久久 | 国产中文字幕在线播放 | av电影在线观看 | 天天操天天谢 | 91片黄在线观| 中文字幕在线影视资源 | 免费精品人在线二线三线 | 黄色av免费| 亚洲免费成人av电影 | 婷婷丁香狠狠爱 | 午夜国产一区二区 | 日韩 在线观看 | 日日操日日干 | 黄色a大片 | 亚洲日本va午夜在线影院 | 91精品视频免费在线观看 | 成片免费观看视频 | mm1313亚洲精品国产 | 国产综合视频在线观看 | 深夜精品福利 | 不卡视频在线看 | 国产手机视频 | 久久电影色 | 在线播放精品一区二区三区 | 亚洲人人网 | 亚洲视频观看 | 久久久久久国产精品999 | 亚洲视频久久久久 | 91精品专区| 久久综合欧美精品亚洲一区 | 久久毛片网 | 成人久久久精品国产乱码一区二区 | 成人影片在线播放 | 天天干 夜夜操 | 免费久久网站 | 色婷婷精品大在线视频 | 国产麻豆精品一区二区 | 国产视频精品在线 | 亚洲精品中文字幕在线观看 | 奇人奇案qvod | 丁香九月激情 | 91国内在线 | 999在线视频 | 国产午夜精品一区二区三区欧美 | 狠狠夜夜 | 国产精品欧美久久 | 国产亚洲va综合人人澡精品 | 天天天操天天天干 | 玖玖视频在线 | 亚洲 成人 欧美 | 五月婷婷电影网 | 日韩网站在线播放 | 中国一级片在线观看 | 色91在线视频 | 一级c片| 日韩精品电影在线播放 | 日本精品视频在线观看 | 香蕉网在线观看 | 24小时日本在线www免费的 | 久久久国产精品电影 | 不卡av在线免费观看 | 久久综合毛片 | 国产日产欧美在线观看 | 波多野结衣电影一区二区三区 | .国产精品成人自产拍在线观看6 | 久草免费福利在线观看 | 91精品国产99久久久久久久 | 精品一区二三区 | www日韩在线观看 | 日本免费久久高清视频 | 综合久久精品 | 久久久久久久国产精品 | 久久草| 毛片网站在线观看 | 久久99精品一区二区三区三区 | 亚洲手机av | 黄色一级免费电影 | 99色视频在线 | 天天操天天是 | 久久人91精品久久久久久不卡 | 正在播放一区二区 | 九色视频网站 | 996久久国产精品线观看 | 久久在现| 久久精品高清视频 | 日韩电影中文,亚洲精品乱码 | 国产精品 日韩精品 | 9999在线视频 | 亚洲精品www久久久 www国产精品com | 国产精品99蜜臀久久不卡二区 | 久久黄色免费 | 国产在线观看,日本 | 色综合天天综合网国产成人网 | 91视频中文字幕 | 97人人艹 | 天天草天天摸 | av免费片| 亚洲精品在线国产 | 亚洲欧洲日韩在线观看 | 色婷婷激婷婷情综天天 | 成人在线小视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产午夜精品一区二区三区在线观看 | 久久九九影视网 | 久久精品欧美一区二区三区麻豆 | 日韩伦理片一区二区三区 | adn—256中文在线观看 | 在线观看黄av| 夜色在线资源 | 亚洲综合一区二区精品导航 | 麻豆视频免费在线观看 | 亚洲va男人天堂 | 国产免费久久av | 亚洲欧美婷婷六月色综合 | 天天操天天玩 | 国产伦精品一区二区三区… | 国产手机免费视频 | 国产精品不卡视频 | 国产一卡二卡在线 | 免费看一及片 | 色网免费观看 | 日韩一级片观看 | 麻豆高清免费国产一区 | 国产精品久久二区 | 成人免费一区二区三区在线观看 | 天堂av色婷婷一区二区三区 | 色综合久久88 | 99在线看 | 亚州欧美视频 | 久久国产精品精品国产色婷婷 | 久久久久久久久福利 | 午夜久久网 | av在观看 | 在线亚洲高清视频 | 亚洲一区久久 | 三级动态视频在线观看 | 丁香综合av | 久久人人爽人人爽人人 | 97在线超碰 | 99久久婷婷| 天天天天色射综合 | 国产成人av网 | 国产精品久久久久久久久免费看 | 在线成人免费 | 亚洲精品一区二区三区在线观看 | 黄色一级大片在线观看 | 九九精品毛片 | 丁香婷婷激情 | 欧美福利在线播放 | 91超在线| 欧美日韩亚洲国产一区 | 久久视频在线观看 | 日韩三级视频在线观看 | 日韩成人中文字幕 | 91福利在线观看 | 亚洲视频456| 久久综合久久综合久久综合 | 探花视频免费观看 | 欧美精品久久久久久 | 久久优 | 亚洲视频综合在线 | 国产精品涩涩屋www在线观看 | 91视频高清完整版 | 国产正在播放 | 国产亚洲精品久久久久久移动网络 | 日本最新中文字幕 | 婷色在线| 在线观看中文字幕第一页 | 久久精品com | 国产精品资源网 | 久久婷亚洲五月一区天天躁 | 麻豆精品视频在线观看免费 | 欧美中文字幕第一页 | wwwww.国产 | 国产又粗又猛又黄又爽的视频 | 一区二区精品视频 | 久久久久久免费 | 欧美永久视频 | 国产精品6 | 日韩 精品 一区 国产 麻豆 | 天天综合狠狠精品 | 国产伦精品一区二区三区无广告 | 国产区在线看 | 国产丝袜美腿在线 | 91精品国产91久久久久福利 | www久久com| 日本久久久精品视频 | 亚洲区视频在线 | 国产伦理久久精品久久久久_ | www.天天射| 亚洲激情精品 | 国产淫a| 成人国产精品一区 | av超碰在线 | 久青草视频在线观看 | 免费福利视频网 | 一区二区三区四区免费视频 | 国产精品久久久网站 | 在线观看av片 | 久久精品国产第一区二区三区 | 午夜久久久久 | 伊人网综合在线观看 | 色婷婷综合五月 | 久久久久欧美精品 | 色婷五月| 天天爱天天插 | 激情片av | 91人人爽人人爽人人精88v | 国产日韩欧美在线 | 日日干网址 | 久久久久国产视频 | 亚洲美女在线国产 | 久久成人毛片 | 国产成人精品一区一区一区 | 人人看看人人 | 国产成人亚洲在线观看 | 超碰在线97免费 | 国产高清视频免费观看 | 日韩区欧美久久久无人区 | 久久成人在线 | 久久精品网站视频 |