常用正則表達式 捕獲組(分組)


1.img標簽

//<img開頭,中間不包含<或>,空格后src以'或"開始.....

Regex reg = new Regex("<img[^<>]*\\ssrc=(['\"]+[^<>'\"]+['\"]+)[^<>]*>", RegexOptions.IgnoreCase);
MatchCollection mc = reg.Matches(html);

foreach (Match m in mc)
{
var src= m.Groups[1].Value;

}

2.textarea標簽內容

string text = "<textarea id='ta1' .*>111</textarea>";// this.txt_RplayContenet.Text;

Regex reg = new Regex("<textarea id='(.+)' .*>(.*)</textarea>", RegexOptions.IgnoreCase);
var match=reg.Match(text); //只返回第一個匹配的
if (match.Success)
{
var id = match.Groups[1].Value; //ta  //括號分組,默認正則匹配到的字符串是group[0],第一個括號group[1],第二個括號group[2]
var content = match.Groups[2].Value; //111
}

 

 

 

 

 

3.命名捕獲組編號規則

(https://www.cnblogs.com/pmars/archive/2011/12/30/2307507.html)

命名捕獲組通過顯式命名,可以通過組名方便的訪問到指定的組,而不需要去一個個的數編號,同時避免了在正則表達式擴展過程中,捕獲組的增加或減少對引用結果導致的不可控。

不過容易忽略的是,命名捕獲組也參與了編號的,在只有命名捕獲組的情況下,捕獲組的編號也是按照“(”出現的順序,從左到右,從1開始進行編號的。第0個返回匹配到的整個字符串.

正則表達式:(?<year>\d{4})-(?<date>\d{2}-(?<day>\d\d))

 

用以上正則表達式匹配字符串:2008-12-31

匹配結果為:

編號

命名

捕獲組

匹配內容

0

 

(?<year>\d{4})-(?<date>\d{2}-(?<day>\d\d))

2008-12-31

1

year

(?<year>\d{4})

2008

2

date

(?<date>\d{2}-(?<day>\d\d))

12-31

3

day

(?<day>\d\d)

31

 

 

 

 

D6B2C47B-427D-4BA0-8A89-FD01FB6D2611 From:http://www.cnblogs.com/xuejianxiyang/p/8256844.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM