C 正規表示式程式設計(一) C 中有關正則的類

2021-05-21 21:50:30 字數 2533 閱讀 1957

正規表示式是一門靈活性非常強的語言,匹配同樣的字串可能在不同的開發人員那裡會得到不同的結果,在平常的時候也是用的時候看看相關資料,不用的時候就丟在腦後了,儘管在處理大部分情況下都能迅速處理,但是處理一些複雜的情況效率仍是不高,藉著前陣子做過的乙個專案涉及到正規表示式的機會,將有關資料閱讀了一遍並結合了自己的體會,整理了幾篇利用

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。所以它們應該有許多的共同之處。其實,我並不打算...