校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > C#中的正則表達式 學習資料

C#中的正則表達式 學習資料

熱門標簽:福州工作銷售電話機器人 高德地圖標注短信簽約 電銷機器人公司簡介 百音電話機器人 RO地圖標注app 錫林郭勒盟地圖標注位置 知名的電話機器人 自制電銷機器人 湖南企業智能外呼系統供應商
C#中的正則表達式 

Jeffrey E.F. Friedl寫了一本關于正則表達式的書《精通正則表達式》。作者為了使讀者更好的理解和掌握正則表達式,編造了一個故事。該書的語言以perl為主。據我所知C#中的正則表達式也是基于perl5。所以它們應該有許多的共同之處。 http://ike.126.com
其實,我并不打算原封不動的對該書的內容進行翻譯,一則這本書內容太多了,我根本就不勝任翻譯這項工作;二則如果我真的把這本書翻譯過來,同時把里面的代碼換成C#,在沒有征得原作者的情況下,可能有侵權的嫌疑了。所以,權當作讀書筆記好了。 

略過冗長的前言,我們可以直接進入第一章: 

介紹正則表達式 

作者說這一章是為正則表達式的絕對菜鳥而準備的,目的是為以后的章節打下堅實的基礎。那么如果你是不是菜鳥,你可以忽略這一章。 

故事場景: 
你的檔案部的頭兒想要一個工具用來檢查重復的單詞(如:this this),一個在大量編輯文檔的時候通常會遇到的問題。你的工作就是創建一個解決方案: 
接受任何數量要檢查的文件,報告每個文件中帶有重復單詞的那些行,突出顯示這些重復的單詞,同時確保原文件名稱和這些行出現在報表中。 
跨行檢查,找到一行的最后一個單詞和下一行開頭第一個單詞出現重復的情況。 
找出重復的單詞,不管他們是否大小寫不同(如:The the),以及允許在這些重復單詞之間含有不同數量的空白字符(空格、制表符、新行等) 
找出重復的單詞,甚至這些單詞被Html標簽隔開。(如:…it is B>very/B> very important.) 

要解決上述的實際問題,我們首先要做的就是寫出正則表達式,找到我們想要的文本,忽略我們不需要的文本,然后使用我們的C#代碼對獲取的文本進行處理。 

在使用正則表達式之前,你也許多少已經知道什么是正則表達式。甚至你不知道,你幾乎可以肯定已經熟悉它的基本概念了。 
你知道report.txt是一個具體的文件名稱,但是如果你有任何Unix或者DOS/Windows的經驗,你也知道“*.txt”可以用來選擇多個文件。這種形式的文件名,有一些字符有著特殊的含義。星號意味著匹配任何東西,問號意味著匹配一個字符。如:“*.txt”表示任何文件名以.txt結尾的文件。 
文件名稱得模式匹配,使用了有限的匹配符。還有當前網絡上的搜索引擎也允許使用某些指定的匹配符來進行內容搜索。正則表達式采用豐富的匹配字符,可以處理各種復雜的問題。 

首先我們介紹兩個位置匹配符: 
^ : 表示一行文字的開始位置 
$ : 表示一行文字的結束位置 

如:表達式:"^Cat", 匹配的單詞Cat出現在行的開始處,注意^是一個位置字符,不是要匹配字符的本身。 
同樣,表達式:"Cat$" 匹配的單詞Cat出現來一行的結尾處。 

接下來,我們介紹表達式中的方括號"[]", 它表示匹配括號中字符中的一個。如: 
表達式:"[0123456789]"將匹配數字0到9的任何一個。 
例如:我們要查找文本中,所有包含gray或者grey,那么表達式可以這么寫:"gr[ea]y" 
[ea]表示匹配ea中的一個,而不是整個ea。 

如果我們要匹配html中的H1>H2>H3>H4>H5>H6>的標簽,我們可以寫表達式: 
"H[123456]>",但是如果我們要匹配所有字符中的一個呢?哈,問題就來了,在方括號中寫出所有的字符?很幸運,我們不必這么做,我們引進范圍符號"-"; 
使用范圍符號,我們只需要給出一個范圍的邊界字符即可,上面的Html例子,我們可以寫成:"H[1-6]>" 
而表達式:"[0-9a-zA-Z]"的意思現在清楚了吧?它匹配數字字符,小寫26個字母和大寫26個字母中的一個。 

出現在[]中的"^"符號 
如果你看到表達式如:"[^0-9]",此時,"^"不再是前面說的位置符號,這里它是否定符號,表示排除的意思,上面的表達式,表示不包含數字0到9的字符。 

思考1:表達式"q[^u]"的意思。假如有下列的單詞,那些將被匹配? 
Iraqi 
Iraqian 
miqra 
qasida 
qintar 
qoph 
zaqqum 


除了范圍字符的表示之外,還有一個是點字符".",點字符出現在表達式中,表示匹配任何字符。 
如表達式:"07.04.76"將匹配: 
形如:07/04/76, 07-04-76,07.04.76。 

如果我們需要在某些字符中可選擇,我們可以采用選項字符"|": 
選項字符有“或"的意思,比如表達式:"[Bob|Robert]"則表示Bob或者Robert將被匹配。 
現在看我們前面提到的表達式:"gr[ea]y" ,利用選項字符我們可以寫作"grey|gray",它們是相同的。 
圓括號的使用:圓括號在表達式中也是被作為元字符使用,如前面的表達式,我們可以寫成:"gr(e|a)y",這里的圓括號是必須的,如果沒有圓括號,那么表達式"gre|ay"將匹配gre或者ay,這不是我們想要的結果。如果你還不是很清楚,讓我們看一下下面的例子: 
在電子郵件中查找所有以From:或者Subject:或者Date:開頭的行,我們比較下面的兩個表達式: 
表達式1:"^From|Subject|Data: " 
表達式2:"^(From|Subject|Data): " 
哪一個是我們想要的? 
很明顯,表達式1的結果不是我們想要的結果,它匹配的將是:From或者Subjec或者Data: ,表達式2使用圓括符,就能滿足我們的需要。 

單詞邊界 
我們已經可以匹配出現在行首和行尾的字符,那么如果我們想定位的不僅僅是行首或者行尾呢?我們需要引入單詞邊界符號,單詞邊界符號是:"\b",斜杠不可省略,否則變成匹配字母b。使用單詞邊界符號,我們可以定位匹配的位置必須出現在一個單詞的開始或者結尾部分,而不是在單詞的中間。例如:"\bis\b"表達式在字符串"This is a cat."中將匹配單詞"is"而不會匹配單詞"This"中的"is"。 

字符串邊界符號 
除了上述的位置符號,如果我們要匹配的是整個字符串(含多個單詞)那么我們可以使用下面的兩個符號: 
\A :表示字符串的開始處; 
\z :表示字符串的結束處。 
表達式:"\AThis is a cat\z"將匹配這個字符串"This is a cat"。 
使用邊界定位符號,這里要提到一個重要的概念,那就是單詞字符,單詞字符表示可以構成單詞的字符,它們是[a-zA-Z0-9]中的任意一個字符。所以上面的表達式也會在句子"This is a cat."得到匹配。匹配的結果不包含句號。 


重復數量符號 
讓我們看表達式:"Colou?r", 這個表達式中出現了我們還沒有見過的問號,(這個問號和文件名稱匹配的問號意義不同),它表示符號前面的一個字符可以被重復的次數,"?"表示0次或者1次,前面的表達式中問號表示u可以出現0或1次,所以它將匹配"Color"或者"Colour"。 
下面是其他的重復數量符號: 
+ :表示1次或者多次 
* :表示0次或者多次 
例如我們要表示一或多個空格,我們可以寫表達式:" +"; 

如果要表示具體次數呢?我們引入花括符{}。 
{n} : n是具體的數字,表示重復n次。 
{n,m}: 表示最少那次,最多m次。 

這些符號都限定了符號前面一個字符的匹配次數。但是如果你想重復多個字符,比如一個單詞,那么怎么辦?我們再次使用圓括號,前面我們把圓括號作為選項的范圍符號,這里是圓括的另外一種使用方法,它被表示為一個組,例如表達式:“(this)"這里的this就是一個組,那么問題就好辦了,重復數量符號可以用來表示它前面一個組的重復次數。 

現在回到查找重復單詞的問題,假如我們要找到“the the”,根據我們迄今為止學到的知識,我們可以寫出表達式: 
"\bthe +the\b" 
表達式的意思是匹配兩個the中間有一個或多個空格隔開。 
同樣,我們還可以寫成: 
"\b(the +){2}" 

但是如果要找全部可能的重復單詞呢?我們目前的知識還不足以解決這個問題,下面我們引進反向引用的概念,我們已經看到圓括號可以作為組的邊界,一個表達式中可以有多個被圓括號限定的組,根據它們出現的次序,這些組缺省的被分配了一個組號,第一個出現的組號為1號,依次類推。那么反向引用就是可以在之后的表達式的位置上是使用"\n"來引用這個組,這里n是被引用的組號。反向引用就像是程序中的變量一樣,下面我們看具體的例子: 
前面的單詞重復表達式,現在我們采用反向引用可以寫做: 
"\b(the) +\1\b" 
現在,如果我們要匹配所有的重復單詞,我們就可以改寫表達式為: 
"\b([a-zA-Z]+) +\1\b" 

最后一個問題是,如果我們要匹配的字符是正則表達式中的符號,怎么辦?對,使用轉義符號"\&;, 例如如果你要匹配一個小數點,那么你可以:"\.",還要注意的是如果在程序中使用表達式那么"\&;也要按照字符串的規定變成"\\"或者在表達式前面加@。 

本章僅僅是提供給菜鳥一個關于正則表達式的基礎知識,它只是其中的部分,我們還有許多東西要學習,這將在后面的章節中一一介紹。其實,正則表達式的學習并不難,你需要的是耐心和實踐,如果你想精通它的話。或許有人說:“我不想知道汽車的細節,我只想學會怎么開車。”如果你也是這樣想的,那么,你永遠也不知道怎么使用正則表達式來解決你的問題,進而,你也永遠不會懂得正則表達式的真正的強大。
您可能感興趣的文章:
  • 使用C# Winform應用程序獲取網頁源文件的解決方法
  • C#基于正則表達式實現獲取網頁中所有信息的網頁抓取類實例
  • 使用C#正則表達式獲取必應每日圖片地址
  • C#正則表達式獲取下拉菜單(select)的相關屬性值
  • C#使用正則表達式抓取網站信息示例
  • C#通過正則表達式實現提取網頁中的圖片
  • c# 正則表達式對網頁進行有效內容抽取
  • 常用正則 常用的C#正則表達式
  • C#的正則表達式Regex類使用簡明教程
  • C# 正則表達式經典分類整理集合手冊
  • WinForm使用正則表達式提取內容的方法示例

標簽:昆明 玉林 怒江 秦皇島 西寧 吉林 茂名 河北

巨人網絡通訊聲明:本文標題《C#中的正則表達式 學習資料》,本文關鍵詞  中的,正則,表達式,學習資料,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《C#中的正則表達式 學習資料》相關的同類信息!
  • 本頁收集關于C#中的正則表達式 學習資料的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美一二三区精品| 91国偷自产一区二区开放时间| 国产精品一区二区三区乱码| 色诱亚洲精品久久久久久| 肉肉av福利一精品导航| 久久影院视频免费| 中文字幕精品三区| 在线观看国产日韩| 狠狠狠色丁香婷婷综合激情| 五月天欧美精品| 欧美日韩你懂的| 国产一区二区毛片| 亚洲欧美偷拍另类a∨色屁股| 欧美三级三级三级爽爽爽| 久久国产精品露脸对白| 亚洲一区二区黄色| 91精品综合久久久久久| 99久久精品免费| 激情综合色综合久久综合| 亚洲人成网站精品片在线观看| 91精品国产色综合久久不卡蜜臀| 丁香亚洲综合激情啪啪综合| 日本成人在线不卡视频| 国产精品高潮呻吟| 欧美v国产在线一区二区三区| 色婷婷av一区二区| 国产精品伊人色| 蜜臀久久久99精品久久久久久| 国产精品高潮呻吟久久| 久久久精品国产免费观看同学| 欧美日韩免费观看一区三区| 91玉足脚交白嫩脚丫在线播放| 国产麻豆精品在线| 久久成人免费日本黄色| 日日夜夜一区二区| 亚洲综合在线第一页| 国产精品久久精品日日| 国产亚洲欧美日韩俺去了| 日韩欧美国产麻豆| 欧美一级片免费看| 欧美一区二区三区免费大片| 欧美一区二区三区四区久久| 欧美日韩一区二区在线观看视频| 欧美综合色免费| 99久久精品99国产精品| 成人污污视频在线观看| 国产99久久久国产精品| 黄色精品一二区| 日韩av电影免费观看高清完整版在线观看| 亚洲女女做受ⅹxx高潮| 国产精品色在线| 国产精品区一区二区三| 中文一区二区完整视频在线观看| 久久久久久久久久久久久女国产乱 | 日韩激情一区二区| 午夜影视日本亚洲欧洲精品| 亚洲综合在线视频| 亚洲国产一区二区在线播放| 亚洲国产精品人人做人人爽| 亚洲午夜影视影院在线观看| 一区二区三区中文字幕| 亚洲一区在线看| 亚洲亚洲人成综合网络| 亚瑟在线精品视频| 奇米888四色在线精品| 在线不卡a资源高清| 欧美理论电影在线| 欧美一级欧美三级| 国产亚洲午夜高清国产拍精品| 中文字幕av一区二区三区| 亚洲六月丁香色婷婷综合久久| 亚洲电影欧美电影有声小说| 婷婷综合久久一区二区三区| 免费人成网站在线观看欧美高清| 国产乱理伦片在线观看夜一区| 国产精品影音先锋| 色哦色哦哦色天天综合| 欧美一区二区三区免费视频| 日本一区二区久久| 亚洲一二三区不卡| 国产盗摄视频一区二区三区| 91浏览器在线视频| 欧美一区二区三区男人的天堂| 国产欧美日韩卡一| 亚洲一区二区三区美女| 国内一区二区在线| 欧美在线999| 精品粉嫩aⅴ一区二区三区四区| 亚洲欧美在线视频观看| 日日嗨av一区二区三区四区| 成人毛片老司机大片| 欧美日韩国产美| 国产精品久久久久aaaa| 一二三区精品视频| 国产成人高清在线| 欧美日韩1234| 国产精品成人免费在线| 首页国产欧美日韩丝袜| www.日韩在线| 2023国产精品自拍| 日韩精品高清不卡| 在线观看av一区| 国产欧美一区二区在线观看| 午夜久久久久久久久| a在线欧美一区| 精品国产一区二区三区av性色 | 久久综合色一综合色88| 亚洲精品日产精品乱码不卡| 国产一区二区看久久| 91精品在线观看入口| 一区二区高清视频在线观看| 成人福利视频网站| 国产女人水真多18毛片18精品视频 | 91美女片黄在线| 国产欧美中文在线| 欧美96一区二区免费视频| 色婷婷久久综合| 欧美国产日韩一二三区| 国产在线精品免费| 精品美女在线播放| 久久国产尿小便嘘嘘| 欧美色精品在线视频| 一区二区理论电影在线观看| 色综合久久久久综合99| 亚洲欧美在线另类| 日本久久一区二区三区| 亚洲综合男人的天堂| 欧美午夜片在线看| 亚洲成a人v欧美综合天堂 | 亚洲成人激情社区| 欧美精品粉嫩高潮一区二区| 偷拍一区二区三区四区| 3d成人h动漫网站入口| 日本不卡在线视频| 精品美女在线播放| 国产精品一区二区视频| 一区二区中文字幕在线| 色丁香久综合在线久综合在线观看| 亚洲少妇中出一区| 欧美日韩久久久| 美女网站一区二区| 日本一区免费视频| 色婷婷国产精品久久包臀 | 欧美一区二区三区免费在线看 | 在线观看网站黄不卡| 调教+趴+乳夹+国产+精品| 欧美一区二区视频在线观看| 麻豆精品久久精品色综合| 久久久国产精品午夜一区ai换脸| 成人国产在线观看| 亚洲午夜电影在线| 久久综合色8888| 91在线码无精品| 日韩av二区在线播放| 国产拍欧美日韩视频二区| 在线观看国产精品网站| 国产在线视频不卡二| 亚洲综合在线第一页| 久久先锋影音av鲁色资源| 91成人免费电影| 国产一区视频导航| 一区二区高清视频在线观看| 亚洲日本护士毛茸茸| 日本久久一区二区| 国产在线不卡一卡二卡三卡四卡| 亚洲激情中文1区| 久久久久久久久一| 欧美日韩一区二区在线观看视频| 国产精品亚洲综合一区在线观看| 亚洲综合男人的天堂| 久久精品亚洲一区二区三区浴池 | 中文字幕一区二区三区在线观看 | 亚洲成人免费视| 专区另类欧美日韩| 欧美va亚洲va| 欧美日韩亚洲综合一区 | 亚洲成人黄色影院| 国产精品乱码妇女bbbb| 欧美一级在线免费| 精品视频在线看| 91视频观看视频| 高清视频一区二区| 麻豆精品国产传媒mv男同 | 日韩中文字幕av电影| 国产精品久久久久影院老司| 欧美电影免费观看高清完整版 | 国产精品无人区| 欧美成人一区二区| 欧美精品免费视频| 精品视频色一区| 欧美伊人久久久久久久久影院| 高清不卡一二三区| 国产福利精品导航| 国内精品久久久久影院薰衣草 | 亚洲国产激情av| 国产夜色精品一区二区av| 精品国内片67194| 精品国产免费一区二区三区香蕉| 欧美丰满一区二区免费视频| 欧美日韩免费不卡视频一区二区三区|