C# の正規表現

WBOY
WBOYオリジナル
2024-09-03 15:27:15472ブラウズ

パターン マッチングは正規表現を使用して C# で行われ、C# の正規表現クラスは C# で正規表現を作成するために使用されます。文字列のパターン マッチングと置換の標準は正規表現を使用して設定され、ユーザーを通じてコン​​ピューターにその方法を伝えます。文字列内の特定のパターンを検索し、探している特定のパターンが見つかった場合の応答は何であるかを調べます。正規表現は正規表現の略語です。C# の正規表現全体は、テキストを識別して置換するための強力な方法です。特定の形式で定義された文字列内。

構文

以下は、C# の正規表現に使用される基本構文のリストです。それらは次のとおりです:

1.数量指定子

重要な量指定子のリストは次のとおりです:

  • *: 前の文字は 0 回以上一致します。正規表現 c* について考えてみましょう。この式は、d、cd、ccd、cccd、….c の nd 乗と一致します。
  • +: 前の文字が 1 回以上一致します。正規表現 c+d を考えてみましょう。この式は、cd、ccd、cccd、….c の nd 乗に一致します。
  • ?: 前の文字は 0 回または 1 回一致します。正規表現 c?d について考えてみましょう。この式は d、cd と一致します。

2.特殊文字

重要な特殊文字のリストは次のとおりです:

  • ^: この特殊文字を使用して文字列の先頭が一致します。 ^カルナータカ州の例を考えてみましょう。この表現は、カルナータカ州が私たちの州であると一致します。
  • $: この特殊文字を使用して文字列の末尾が照合されます。 Karnataka$ の例を考えてみましょう。この表現は、私たちの州はカルナータカ州です。
  • と一致します。
  • ドット (.): この特殊文字を使用すると、どの文字も 1 回だけ一致します。 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: 空白文字は、この特殊文字を使用して照合されます。 ws の例を考えてみましょう。この式は「IC B1.5」の「C」と一致します
  • S: 空白以外の文字は、この特殊文字を使用して照合されます。 sS の例を考えてみましょう。この式は「IC__B1.5」の「_」と一致します

3.キャラクタークラス

文字を角かっこで囲むとグループ化できます。これを行うと、入力内の少なくとも 1 つの文字がクラス内の任意の文字と一致します。

[]: [] を使用して文字範囲を一致させることができます。 [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# での正規表現の仕組み

基本的に、正規表現エンジンには 2 種類あります。これらは、テキスト指向のエンジンと正規表現指向のエンジンです。正規表現指向のエンジンは、正規表現をスキャンして、正規表現内の次のトークンを次の文字と照合しようとします。一致が見つかった場合は正規表現が進み、そうでない場合は正規表現内の前の位置と解析対象の文字列に戻り、そこで正規表現を介して別のパスを試行できます。テキスト指向エンジンは、文字列内の次の文字に移動する前に、文字列をスキャンして正規表現のすべての順列を試行します。テキスト指向エンジンでは、バックトラックや後戻りはありません。後で完全に一致するものが見つかる可能性がある場合でも、正規表現エンジンによって常に左端の一致が返されます。エンジンは、正規表現が文字列に適用されるときは常に、文字列の最初の文字から始まります。考えられるすべての置換が最初の文字に適用され、結果が失敗したように見えます。その後、置換が文字列の 2 番目の文字に移動され、正規表現エンジンが完全一致を見つけるまでこのプロセスが続きます。

例を考えてみましょう お風呂に入る前に浴槽内の水を確認してください。正規表現エンジンは、上記の文から「bath」という単語を検索するように求められます。最初の文字 C は正規表現エンジンによって b と照合されますが、これは失敗します。したがって、次の文字 H は正規表現エンジンによって b と一致しようとしますが、これも失敗します。これが続き、正規表現エンジンが 24 番目 文字を b と照合しようとすると、一致します。したがって、続いて、バスタブからの単語「バス」と単語「バス」を照合します。エンジンは、バスタブからの単語「バス」が正しい一致として報告し、ステートメント内で他に一致するものがあるかどうかを確認することは行われません。これは、正規表現エンジンが内部でどのように動作するかです。

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(string input): このメソッドを使用して、指定された入力文字列内で出現する正規表現がすべて検索されます。
  • 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。