真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#中如何使用正則表達(dá)式-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)C# 中如何使用正則表達(dá)式,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到秭歸網(wǎng)站設(shè)計(jì)與秭歸網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋秭歸地區(qū)。

.NET 中的正則表達(dá)式是基于 Perl 5 的正則表達(dá)式。

超時(shí)

從 .NET Framework 4.5 開(kāi)始,正則表達(dá)式支持在匹配操作中指定超時(shí)時(shí)間。如果匹配超時(shí),就會(huì)拋出 RegexMatchTimeoutException。

所有方法都增加了帶超時(shí)時(shí)間參數(shù)的重載:

public static Match Match(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

public static MatchCollection Matches(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

public static string Replace(string input, string pattern, string replacement, RegexOptions options, TimeSpan matchTimeout);

public static string[] Split(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

如果應(yīng)用程序需要處理任意的正則表達(dá)式(例如在高級(jí)搜索對(duì)話框中)則務(wù)必使用該參數(shù)以防止一些惡意的正則表達(dá)式導(dǎo)致無(wú)限計(jì)算。

編譯正則表達(dá)式

RegexOptions.Compiled 選項(xiàng)將會(huì)使 Regex 實(shí)例通過(guò)輕量級(jí)的代碼生成器動(dòng)態(tài)地構(gòu)建并編譯針對(duì)特定正則表達(dá)式的代碼,提高匹配速度。

模式修正符

模式修正符不僅可以打開(kāi),還可以關(guān)閉。如下示例,先打開(kāi)忽略大小寫(xiě),再關(guān)閉忽略大小寫(xiě),所以匹配結(jié)果是 Aa。

Regex.Match("AAAa", "(?i)a(?-i)a").Value;  // Aa

零寬斷言

現(xiàn)在要寫(xiě)一個(gè)用于驗(yàn)證密碼是否符合要求的正則表達(dá)式,要求是至少包含一個(gè)數(shù)字。

這個(gè)很簡(jiǎn)單,如下就可以了

Regex.IsMatch("12345678", "\d");

現(xiàn)在加一個(gè)條件,長(zhǎng)度要大于 6 位。似乎用一個(gè)正則無(wú)法實(shí)現(xiàn)。

其實(shí)是可以的,用零寬斷言中的 正向先行斷言 就可以了。

正向先行斷言 (?=exp),一般用來(lái)匹配 exp 之前的內(nèi)容。例如下面?zhèn)€例子,要取出姓名,需要匹配 , 之前的內(nèi)容。

Regex.Match("姓名張三,男,30 歲", "(?<=姓名).*?(?=,)").Value; // 張三

其實(shí),正確的理解是:正向先行斷言,匹配成功之后,會(huì)退回起始位置,然后繼續(xù)之后的匹配。

這里最重要的一點(diǎn)是,匹配成功以后退回起始位置,所以,對(duì)它正確的理解是,一個(gè)前向條件判斷。

那么上面的密碼至少包含一個(gè)數(shù)字,且長(zhǎng)度大于 6 就好實(shí)現(xiàn)了:

Regex.IsMatch("abcde6", @"(?=.*\d).{6,}");

我們?cè)僭黾右稽c(diǎn)難度,密碼要求符合如下條件:

  • 至少 8 位

  • 至少包含一個(gè)數(shù)字

  • 至少包含一個(gè)小寫(xiě)字母

  • 至少包含一個(gè)大寫(xiě)字母

string pattern = @"(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}";
Regex.IsMatch("12345678", pattern); // false
Regex.IsMatch("1234567a", pattern); // false
Regex.IsMatch("123456aA", pattern); // true

分割字符串

分割字符串分隔符不會(huì)包含在結(jié)果中,若要將分隔符包含在結(jié)果中,則可以將表達(dá)式包含在正前向條件中。

foreach (string s in Regex.Split("oneTwoThree", "(?=[A-Z])"))
  Console.WriteLine(s);
  
// one
// Two
// Three

分組

正則表達(dá)式中可以通過(guò) \n 語(yǔ)法來(lái)引用索引為 n 的分組。

var m = Regex.Matches("pop pope peep", @"\b(\w)\w+\1\b");

// pop
// peep

命名捕獲分組語(yǔ)法:
(?'組名'表達(dá)式) 或 (?<組名>表達(dá)式)

引用命名分組語(yǔ)法:
\k'組名' 或 \k<組名>

替換并分割文本

替換字符串可以通過(guò) $0 作為替代結(jié)構(gòu)訪問(wèn)原始的匹配。$1、$2 訪問(wèn)任意捕獲的分組。對(duì)于命名分組,可以通過(guò) ${name} 的方式進(jìn)行訪問(wèn)。

給所有數(shù)字加上 <>:

Console.WriteLine(Regex.Replace("1 + 11 = 12", @"\d+", @"<$0>"));
// <1> + <11> = <12>

MatchEvaluator 委托

Replace 方法有一個(gè)重載,使用 MatchEvaluator 委托作為參數(shù),替代 replacement。該委托將對(duì)每個(gè)匹配執(zhí)行一次,并使用其返回結(jié)果替換原字符串中的值。

MatchEvaluator 委托定義:

public delegate string MatchEvaluator(Match match);

示例:

Console.WriteLine(Regex.Replace("1 + 11 = 12", @"\d+", m => (int.Parse(m.Value) * 10).ToString()));

// 10 + 110 = 120

看完上述內(nèi)容,你們對(duì)C# 中如何使用正則表達(dá)式有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝大家的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享題目:C#中如何使用正則表達(dá)式-創(chuàng)新互聯(lián)
新聞來(lái)源:http://weahome.cn/article/gjpos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部