C#中的Regex(2)-案例篇

來源:互聯網
上載者:User

學習了C#中的Regex,自己嘗試了寫了一些提取相關資訊和匹配驗證,馬馬虎虎.

引用命名空間:

1 using System.Text.RegularExpressions;

 

案例1:驗證email地址:

註冊時常會用到email綁定,驗證email的合法性在此.

WinForm介面:

    TextBox: txtemail;

    Button: btnCheck;

btnCheck點擊事件:

 1         private void btnCheck_Click(object sender, EventArgs e) 2         { 3             string i = txtemail.Text.Trim(); 4             Regex r = new Regex(@"^\w+@\w+.[a-z]+");//xx@xx.xx 5             if (r.IsMatch(i)) 6             { 7                 MessageBox.Show("格式正確!"); 8             } 9             else10             {11                 MessageBox.Show("格式錯誤!");12             }13         }

 

案例2:提取網頁源碼的ed2k連結:

(1)對VeryCD的備份中會用到提取連結,可以先遍曆網頁的id號;

(2)根據url擷取網頁源碼並利用Regex 提取ed2k連結 和對應的標題;

(3)存入listbox並寫入為txt文本.

關於這些 備份VeryCD 和RSS閱讀器 的相關實現會在後面研究.

WinForm介面:

    TextBox: txtemail;

    Button: btnCheck;

btnCheck點擊事件:

 1         private void btngeted2k_Click(object sender, EventArgs e) 2         { 3             string i = txtemail.Text.Trim(); 4             Regex r = new Regex(@"[ed2k://|]{8}[a-z]+[|][^|]?\w+[.]+[^|]+[|]");//匹配ed2k連結 5             //string j = r.Match(i).ToString(); 6             MatchCollection j = r.Matches(i); 7             //j = j.Substring(0, j.Length - 1); 8             //去掉提取字串的換行,因為假如儲存的源碼中txt文本自動換行的話 9             if (r.IsMatch(i))10             {11                 string str="",temp="";12                 for (int c = 0; c < j.Count; c++)13                 {14                     temp=j[c].ToString();15                     str += temp.Substring(0, temp.Length - 1)+"\n\n";16                 }17 18                 MessageBox.Show(str);19                 //MessageBox.Show(r.Match(i).ToString());20 21             }22             else23             {24                 MessageBox.Show("尚未提取出ed2k連結!");25             }26         }

效果:

案例3:提取cnblogs首頁的文章連結地址:

適合做個RSS閱讀,只保留文字.

主介面同上

 1         private void btnGetCnblogs_Click(object sender, EventArgs e) 2         { 3             string i = txtemail.Text.Trim(); 4             Regex r = new Regex(@"[a-z]{4}[:]+//[w]{3}[^ ]+/[0-9]+.[html]{4}"); 5             MatchCollection j = r.Matches(i); 6             if (r.IsMatch(i)) 7             { 8                 string str=""; 9                 for (int c = 0; c < j.Count; c++)10                 {11                     if (c + 1 < j.Count)12                     {13                         if (j[c].ToString() != j[c + 1].ToString())14                             //去掉相鄰兩個重複的連結,當相鄰兩個連結不相等時才將前一個存入str;15                             //因為部落格園裡面同一篇文章會提取出相同的三個連結16                         {17                             //list.Add(j[c].ToString());18                             str += j[c].ToString() + "\n\n";19                         }20                     }21                 }22                 str=str+j[j.Count - 1].ToString();23 24                 MessageBox.Show(str);25                 //MessageBox.Show(r.Match(i).ToString());26 27             }28             else29             {30                 MessageBox.Show("尚未提取cnblogs文章連結!");31             }32         }

PS:提取漢字的Regex:  [\u4e00-\u9fa5]

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.