午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    正則表達(dá)式 c#
    來源:易賢網(wǎng) 閱讀:699 次 日期:2014-09-05 11:49:55
    溫馨提示:易賢網(wǎng)小編為您整理了“正則表達(dá)式 c#”,方便廣大網(wǎng)友查閱!

    首先,我們先看幾個實(shí)際的例子:

    1. 驗(yàn)證輸入字符是否

    javascript:

    var ex = "^w+$";

    var re = new RegExp(ex,"i");

    return re.test(str);

    VBScript

    Dim regEx,flag,ex

    ex = "^w+$"

    Set regEx = New RegExp

    regEx.IgnoreCase = True

    regEx.Global = True

    regEx.Pattern = ex

    flag = regEx.Test( str )

    C#

    System.String ex = @"^w+$";

    System.Text.RegularExpressions.Regex reg = new Regex( ex );

    bool flag = reg.IsMatch( str );

    2. 驗(yàn)證郵件格式

    C#

    System.String ex = @"^w+@w+.w+$";

    System.Text.RegularExpressions.Regex reg = new Regex( ex );

    bool flag = reg.IsMatch( str );

    3. 更改日期的格式(用 dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式)

    C#

    String MDYToDMY(String input)

    {

    return Regex.Replace(input,

    "b(?d{1,2})/(?d{1,2})/(?d{2,4})b",

    "${day}-${month}-${year}");

    }

    4. 從 URL 提取協(xié)議和端口號

    C#

    String Extension(String url)

    {

    Regex r = new Regex(@"^(?w+)://[^/]+?(?:d+)?/",

    RegexOptions.Compiled);

    return r.Match(url).Result("${proto}${port}");

    }

    這里的例子可能是我們在網(wǎng)頁開發(fā)中,通常會碰到的一些正則表達(dá)式,尤其在第一個例子中,給出了使用javascript,vbScript,C#等不同語言的實(shí)現(xiàn)方式,大家不難看出,對于不同的語言來說,正則表達(dá)式?jīng)]有區(qū)別,只是正則表達(dá)式的實(shí)現(xiàn)類不同而已。而如何發(fā)揮正則表達(dá)式的公用,也要看實(shí)現(xiàn)類的支持。

    (摘自msdn: Microsoft .NET 框架 SDK 提供大量的正則表達(dá)式工具,使您能夠高效地創(chuàng)建、比較和修改字符串,以及迅速地分析大量文本和數(shù)據(jù)以搜索、移除和替換文本模式。ms-help://MS.VSCC/MS.MSDNVS.2052/cpgenref/html/cpconregularexpressionslanguageelements.htm)

    下面我們逐個來分析這些例子:

    1-2,這兩個例子很簡單,只是簡單的驗(yàn)證字符串是否符合正則表達(dá)式規(guī)定的格式,其中使用的語法,在第一篇文章中都已經(jīng)介紹過了,這里做一下簡單的描述。

    第1個例子的表達(dá)式: ^w+$

    ^ -- 表示限定匹配開始于字符串的開始

    w – 表示匹配英文字符

    + -- 表示匹配字符出現(xiàn)1次或多次

    $ -- 表示匹配字符到字符串結(jié)尾處結(jié)束

    驗(yàn)證形如asgasdfs的字符串

    第2個例子的表達(dá)式: ^w+@w+.w+$

    ^ -- 表示限定匹配開始于字符串的開始

    w – 表示匹配英文字符

    + -- 表示匹配字符出現(xiàn)1次或多次

    @ -- 匹配普通字符@

    . – 匹配普通字符.(注意.為特殊字符,因此要加上轉(zhuǎn)譯)

    $ -- 表示匹配字符到字符串結(jié)尾處結(jié)束

    驗(yàn)證形如dragontt@sina.com的郵件格式

    第3 個例子中,使用了替換,因此,我們還是先來看看正則表達(dá)式中替換的定義:

    (ms-help://MS.VSCC/MS.MSDNVS.2052/cpgenref/html/cpconsubstitutions.htm)

    替換

    字符

    含義

    $123

    替換由組號 123(十進(jìn)制)匹配的最后一個子字符串。

    ${name}

    替換由 (? ) 組匹配的最后一個子字符串。

    $$

    替換單個“$”字符。

    $&

    替換完全匹配本身的一個副本。

    $`

    替換匹配前的輸入字符串的所有文本。

    $'

    替換匹配后的輸入字符串的所有文本。

    $+

    替換最后捕獲的組。

    $_

    替換整個輸入字符串。

    分組構(gòu)造

    (ms-help://MS.VSCC/MS.MSDNVS.2052/cpgenref/html/cpcongroupingconstructs.htm)

    分組構(gòu)造

    定義

    ( )

    捕獲匹配的子字符串(或非捕獲組;有關(guān)更多信息,請參閱正則表達(dá)式選項中的 ExplicitCapture 選項。)使用 () 的捕獲根據(jù)左括號的順序從 1 開始自動編號。捕獲元素編號為零的第一個捕獲是由整個正則表達(dá)式模式匹配的文本。

    (?<name> )

    將匹配的子字符串捕獲到一個組名稱或編號名稱中。用于 name 的字符串不能包含任何標(biāo)點(diǎn)符號,并且不能以數(shù)字開頭??梢允褂脝我柼娲饫ㄌ枺?(?'name')。

    (?<name1-name2> )

    平衡組定義。刪除先前定義的 name2 組的定義并在 name1 組中存儲先前定義的 name2 組和當(dāng)前組之間的間隔。如果未定義 name2 組,則匹配將回溯。由于刪除 name2 的最后一個定義會顯示 name2 的先前定義,因此該構(gòu)造允許將 name2 組的捕獲堆棧用作計數(shù)器以跟蹤嵌套構(gòu)造(如括號)。在此構(gòu)造中,name1 是可選的??梢允褂脝我柼娲饫ㄌ?,例如 (?'name1-name2')。

    (?: )

    非捕獲組。

    (?imnsx-imnsx: )

    應(yīng)用或禁用子表達(dá)式中指定的選項。例如,(?i-s: ) 將打開不區(qū)分大小寫并禁用單行模式。有關(guān)更多信息,請參閱正則表達(dá)式選項。

    (?= )

    零寬度正預(yù)測先行斷言。僅當(dāng)子表達(dá)式在此位置的右側(cè)匹配時才繼續(xù)匹配。例如,w+(?=d) 與后跟數(shù)字的單詞匹配,而不與該數(shù)字匹配。此構(gòu)造不會回溯。

    (?! )

    零寬度負(fù)預(yù)測先行斷言。僅當(dāng)子表達(dá)式不在此位置的右側(cè)匹配時才繼續(xù)匹配。例如,b(?!un)w+b 與不以 un 開頭的單詞匹配。

    (?<= )

    零寬度正回顧后發(fā)斷言。僅當(dāng)子表達(dá)式在此位置的左側(cè)匹配時才繼續(xù)匹配。例如,(?<=19)99 與跟在 19 后面的 99 的實(shí)例匹配。此構(gòu)造不會回溯。

    (?

    零寬度負(fù)回顧后發(fā)斷言。僅當(dāng)子表達(dá)式不在此位置的左側(cè)匹配時才繼續(xù)匹配。

    (?> )

    非回溯子表達(dá)式(也稱為貪婪子表達(dá)式)。該子表達(dá)式僅完全匹配一次,然后就不會逐段參與回溯了。(也就是說,該子表達(dá)式僅與可由該子表達(dá)式單獨(dú)匹配的字符串匹配。)

    我們還是先簡單的了解一下這兩個概念:

    分組構(gòu)造:

    最基本的構(gòu)造方式就是(),在左右括號中括起來的部分,就是一個分組;

    更進(jìn)一步的分組就是形如:(?<name> )的分組方式,這種方式與第一種方式的不同點(diǎn),就是對分組的部分進(jìn)行了命名,這樣就可以通過該組的命名來獲取信息;

    (還有形如(?= )等等的分組構(gòu)造,我們這篇的例子中也沒有使用到,下次我們在來介紹)

    替換:

    上面提到了兩種基本的構(gòu)造分組方式()以及(?<name> ),通過這兩種分組方式,我們可以得到形如$1,${name}的匹配結(jié)果。

    這樣說,可能概念上還是有些模糊,我們還是結(jié)合上面的例子來說:

    第三個例子的正則表達(dá)式為:b(?d{1,2})/(?d{1,2})/(?d{2,4})b

    (解釋一下,為什么這里都是一起用:這里是C#的例子,在C#語言中是轉(zhuǎn)譯字符,要想字符串中的不轉(zhuǎn)譯,就需要使用或者在整個字符串的開始加上@標(biāo)記,即上面等價與

    @”b(?d{1,2})/(?d{1,2})/(?d{2,4}b”)

    b -- 是一種特殊情況。在正則表達(dá)式中,除了在 [] 字符類中表示退格符以外,b 表示字邊界(在 w 和 W 字符之間)。在替換模式中,b 始終表示退格符

    (?d{1,2}) – 構(gòu)造一個名為month的分組,這個分組匹配一個長度為1-2的數(shù)字

    / -- 匹配普通的/字符

    (?d{1,2}) --構(gòu)造一個名為day的分組,這個分組匹配一個長度為1-2的數(shù)字

    / -- 匹配普通的/字符

    (?d{2,4}b”) --構(gòu)造一個名為year的分組,這個分組匹配一個長度為2-4的數(shù)字

    這里還不能夠看出這些分組的作用,我們接著看這一句

    ${day}-${month}-${year}

    ${day} – 獲得上面構(gòu)造的名為day的分組匹配后的信息

    - -- 普通的-字符

    ${month} --獲得上面構(gòu)造的名為month的分組匹配后的信息

    - -- 普通的-字符

    ${year} --獲得上面構(gòu)造的名為year的分組匹配后的信息

    舉例來說:

    將形如04/02/2003的日期使用例3種的方法替換

    (?d{1,2}) 分組將匹配到04由${month}得到這個匹配值

    (?d{1,2}) 分組將匹配到02由${day}得到這個匹配值

    (?d{1,2}) 分組將匹配到2003由${year}得到這個匹配值

    了解了這個例子后,我們在來看第4個例子就很簡單了。

    第4個例子的正則

    ^(?w+)://[^/]+?(?:d+)?/

    ^ -- 表示限定匹配開始于字符串的開始

    (?w+) – 構(gòu)造一個名為proto的分組,匹配一個或多個字母

    : -- 普通的:字符

    // -- 匹配兩個/字符

    [^/] – 表示這里不允許是/字符

    +? – 表示指定盡可能少地使用重復(fù)但至少使用一次匹配

    (?:d+) – 構(gòu)造一個名為port的分組,匹配形如:2134(冒號+一個或多個數(shù)字)

    ? – 表示匹配字符出現(xiàn)0次或1次

    / -- 匹配/字符

    最后通過${proto}${port}來獲取兩個分組構(gòu)造的匹配內(nèi)容

    (有關(guān)Regex對象的用法,參考

    ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemTextRegularExpressionsRegexMembersTopic.htm)

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:正則表達(dá)式 c#
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)