首頁 >後端開發 >C#.Net教程 >C# 中的正規表示式

C# 中的正規表示式

WBOY
WBOY原創
2024-09-03 15:27:15478瀏覽

模式匹配是在C# 中使用正則表達式完成的,C# 的regex 類別用於在C# 中創建正則表達式,字符串中的模式匹配和替換的標準是使用正則表達式設置的,它通過使用者告訴電腦如何尋找字串中的特定模式,當它找到它正在尋找的特定模式時必須有什麼回應,regex 是正則表達式的縮寫,總體而言,C# 中的正則表達式是識別和替換文本的強大方法在以特定格式定義的字串中。

文法

以下是 C# 中正規表示式所使用的基本語法清單。他們是:

1.量詞

重要量詞列表如下:

  • *:前面的字元符合零次或多次。考慮正規表示式 c*。此表達式符合 d, cd, ccd, cccd,….c 的 nd 次方。
  • +:前面的字元符合一次或多次。考慮正規表達式 c+d。此表達式符合 cd, ccd, cccd,….c 的 nd 次方。
  • ?: 前面的字元符合零次或一次。考慮正規表示式 c?d。該表達式符合 d, cd。

2.特殊字元

重要特殊字元列表如下:

  •  ^: 字串的開頭使用此特殊字元進行配對。考慮一下例子^卡納塔克邦。這個表達與卡納塔克邦是我們的州相匹配。
  •  $: 使用此特殊字元來符合字串的結尾。考慮一下 Karnataka$ 的例子。此表達式匹配我們的州是卡納塔克邦。  
  • 點 (.): 使用此特殊字符,任何字符僅匹配一次。考慮範例 l.t(長度 = 3)。此表達式與 lit、lot、let 相符。
  • d: 使用此特殊字元來匹配數字字元。考慮範例 Regex-[0-9]。此表達式匹配 123、456、254 等
  • D: 使用此特殊字元來匹配任何非數字字元。考慮範例 Regex-[^0-9]。此表達式符合除 0-9 數字組成的數字之外的所有內容。
  • w:可以使用此特殊字元來匹配字母數字字元加上“_”。考慮範例正規表示式 - A 到 Z、0 到 9、a 到 z、_(底線)。此表達式與字母數字字元“_”相符。
  • W:任何非單字字元都使用此特殊字元進行配對。考慮範例 W。此表達式符合“.”在“IR B2.8”
  • s:使用此特殊字元來匹配空白字元。考慮這個例子。此表達式與“IC B1.5”中的“C”
  • S:使用此特殊字元來匹配非空白字元。考慮 sS 的例子。此表達式符合「IC__B1.5」中的「_」

3.字元類別

可以透過將字元放在方括號之間來將它們分組。透過這樣做,輸入中的至少一個字元將與類別中的任何字元相符。

[]: 可以使用 [] 來匹配一系列字元。考慮範例 [Xyz]。此表達式符合 x、y 和 z 中的任一個。

考慮範例 [c​​-r]。此表達式符合 c 和 r 之間的任何字元。

4.分組與替代方案

可以使用括號(和)將這些內容組合在一起。

  • (): 表達式可以使用 () 進行分組。考慮 (ab)+ 的例子。此表達式符合 ab、abab,不符合 aabb。
  •  {}:符合前面的字元特定次數。可以使用以下方式指定次數:
  • n: 前一個元素剛好符合 n 次。考慮範例“,d{3}”。此表達式符合 1,123.40
  • 中的 123
  •  {n,m}:前一個元素至少符合 n 次,但不超過 m 次。考慮範例“,d{2,3}”。此表達式符合 1,123.40
  • 中的,12 和,123

C# 中正規表示式的工作

基本上,有兩種類型的正規表示式引擎。它們是文字導向引擎和正規表示式導向引擎。正規表示式引導的引擎掃描正規表示式,嘗試將正規表示式中的下一個標記與下一個字元進行比對。如果找到匹配,則正則表達式前進,否則它將返回到正則表達式中的上一個位置和要解析的字串,在其中它可以嘗試通過正則表達式表達式的不同路徑。文字導向引擎掃描字串,嘗試正規表示式的所有排列,然後移動到字串中的下一個字元。文字導向引擎不會回溯或向後。即使稍後有可能找到確切的匹配項,正規表示式引擎始終會傳回最左邊的匹配項。每當將正規表示式應用於字串時,引擎都會從字串的第一個字元開始。所有可能的排列都應用於第一個字符,結果似乎失敗,然後排列被移動到字串中的第二個字符,這個過程一直持續到正則表達式引擎找到完全匹配。

考慮這個例子,在去洗澡之前檢查浴缸裡的水。正規表示式引擎被要求從上面的句子中找到單字 Bath。正規表示式引擎將第一個字元 C 與 b 匹配,這是失敗的。因此,下一個字元 H 嘗試透過正規表示式引擎與 b 匹配,但這又失敗了。這樣繼續下去,當正規表示式引擎嘗試將第 24 個 字元與 b 匹配時,它會匹配。因此,它繼續將單字「bath from the浴盆」與單字「bath」進行匹配,並且引擎將單字「bath from the浴盆」報告為正確的匹配項,並且不會在語句中進一步查看是否有任何其他匹配項。這就是正規表示式引擎的內部運作原理。

C#中正規表示式的方法

C# 中的正規表示式使用下列方法。他們是:

  • public bool IsMatch(string input): 使用此方法將正規表示式建構函式指定的正規表示式與指定的輸入字串進行比對。
  • public bool IsMatch(string input, int startat): 透過此方法將正規建構函式指定的正規表示式與指定起始位置的指定輸入字串進行比對。
  • public static bool IsMatch(string input, string pattern): 此方法將指定的正規表示式與指定的輸入字串進行比對。
  •  public MatchCollection Matches(字串輸入):使用此方法在指定的輸入字串中搜尋正規表示式的所有符合項目。
  • public string Replace(字串輸入,字串替換): 將與正規表示式匹配的指定字串全部替換為替換字串,使用此方法。
  • public string[] Split(string input): 正規表示式指定的位置就是使用此方法將字串陣列分割為子字串陣列的位置。

C# 中的正規表示式範例

C# 程式示範如何使用正規表示式驗證手機號碼。

代碼:

using System;
using System.Text.RegularExpressions;
class Check {
static void Main(string[] args)
{
//Mobile numbers are given as a input to an array of strings
string[] nos = {"9902147368",
"9611967273", "63661820954"};
foreach(string s in nos)
{
Console.WriteLine("The mobile number {0} {1} a valid number.", s,
checkvalid(s) ? "is" : "is not");
}
Console.ReadKey();
}
// Regex expressions are verified through this code block
public static bool checkvalid(string Number)
{
string cRegex = @"(^[0-9]{10}$)|(^\+[0-9]{2}\s+[0-9]
{2}[0-9]{8}$)|(^[0-9]{3}-[0-9]{4}-[0-9]{4}$)";
Regex res = new Regex(cRegex);
if (res.IsMatch(Number))
return (true);
else
return (false);
}
}

輸出:

C# 中的正規表示式

以上是C# 中的正規表示式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn