正規表示式是一門靈活性非常強的語言,匹配同樣的字串可能在不同的開發人員那裡會得到不同的結果,在平常的時候也是用的時候看看相關資料,不用的時候就丟在腦後了,儘管在處理大部分情況下都能迅速處理,但是處理一些複雜的情況效率仍是不高,藉著前陣子做過的乙個專案涉及到正規表示式的機會,將有關資料閱讀了一遍並結合了自己的體會,整理了幾篇利用
c#進行正規表示式程式設計的文章,一來加深自己的印象和理解,二來供部落格上的讀者學習借鑑。
在.net
中提供了對正規表示式的支援,並且提供了相關的類,分別有:
regex
、match
、group
、capture
、regexoptions
、matchcollection
、groupcollection
、capturecollection
。它們之間的關聯如下:
對它們描述如下:
regex
:正規表示式類,代表了乙個不可變的正規表示式。
match
:代表了
regex
類的例項的一次匹配結果,可以通過
regex
的match()
例項方法返回乙個
match
的例項。
matchcollection
:代表了
regex
類的例項的所有匹配結果,可以通過
regex
的matches()
例項方法返回乙個
matchcollection
的例項。
group
:表示單個捕獲組的結果。由於一次匹配可能包含0個、
1個或多個分組,所以
match
的例項中返回的是捕獲組集合的結果,即
groupcollection
。groupcollection
:表示單個匹配中的多個捕獲組的集合,可以通過
match
的groups
例項屬性返回
groupcollection
的例項。
capture
:表示單個捕獲中的乙個子字串。同
group
一樣,由於乙個捕獲中可能包含0個、
1個或多個子字串,所以
group
的例項中返回的是子字串集合的結果,即
capturecollection
。capturecollection
:預設表示按照從裡到外、從左到右的順序由捕獲組匹配到的所有子字串集合,可以通過
group
或者match
的captures
例項屬性返回
capturecollection
的例項。注意,可以使用
regexoptions.righttoleft
來改變這種匹配順序。
regexoptions
:提供用於設定正規表示式選項的列舉值。
像上面提到的
righttoleft
就是它的乙個列舉值之一,除此之外還有
none
、ignorecase
、multiline
、explicitcapture
、compiled
、singleline
、ignorepatternwhitespace
、righttoleft
、ecmascript
及cultureinvariant
。regexoptions
列舉值可以相加,比如我們想匹配不區分大小寫的字串「
abc」並且還想提高一下執行速度,那麼可以寫如下**:
regexoptions options=regexoptions.ignorecase|regexoptions.compiled;
regex regex=new regex("abc",options);
regex
、match
、group
及capture
的關係及成員
從上圖可以看出
regex
類提供了許多靜態方法,很多方法還提供了多種過載方式(在圖中對存在多種引數過載的方法都以「
...」表示),除此之外我們還會發現
capture
、group
及match
之間存在繼承關係(說實在話剛開始用的時候我發現它們之間存在著很多相同的字段,這讓我當時迷惑不已,希望大家看到這個圖後不要再像我當初那樣迷惑了)。
在使用c#
中的正規表示式進行文字處理之前先花點時間了解一下
.net
中有關正規表示式的類和它們之間的關係是有必要的,這篇就算是預熱篇了,在開始學習正規表示式之前做做熱身運動。雖然在
c#regex
類,利用
regex
可以用來替換、分割和處理字串。
周公2023年2
月22日
C 正規表示式程式設計(一) C 中有關正則的類
正規表示式是一門靈活性非常強的語言,匹配同樣的字串可能在不同的開發人員那裡會得到不同的結果,在平常的時候也是用的時候看看相關資料,不用的時候就丟在腦後了,儘管在處理大部分情況下都能迅速處理,但是處理一些複雜的情況效率仍是不高,藉著前陣子做過的乙個專案涉及到正規表示式的機會,將有關資料閱讀了一遍並結合...
Python中有關正規表示式
今天學習了python中有關正規表示式的知識。關於正規表示式的語法,不作過多解釋,網上有許多學習的資料。這裡主要介紹python中常用的正規表示式處理函式。re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import re text jgood is a handsom...
C 正規表示式
c 中的正規表示式 1 c 中的正規表示式 jeffrey e.f.friedl寫了一本關於正規表示式的書 精通正規表示式 作者為了使讀者更好的理解和掌握正規表示式,編造了乙個故事。該書的語言以perl為主。據我所知c 中的正規表示式也是基於perl5。所以它們應該有許多的共同之處。其實,我並不打算...