C# 正規表現
正規表現は、入力テキストと一致するパターンです。 .Net フレームワークは、この種の照合を可能にする正規表現エンジンを提供します。パターンは、1 つ以上の文字、演算子、および構造体で構成されます。
正規表現を定義する
以下に、正規表現の定義に使用される文字、演算子、構造体のさまざまなカテゴリを示します。
文字エスケープ
文字クラス
アンカー
グループ構成
修飾子
後方参照構成
代替構成
置換
その他の構成
文字エスケープ
正規表現内のバックスラッシュ文字 () は、それに続く文字が特殊文字であるか、文字が文字通りに解釈される必要があることを示します。
次の表にエスケープ文字を示します。
エスケープ文字
説明
パターン
match
a アラーム (ベル) シンボル u0007 と一致します。 a "警告!" + "u0007"
b 文字クラスでは、バックスペース キー u0008 と一致します。 [b]{3,} "bbbb" の "bbbb"
はタブ文字 u0009 と一致します。 (w+)t "NametAddrt" の "Namet" と "Addrt"
r は復帰文字 u000D と一致します。 (r は改行文字 n と同等ではありません。) 「rHellonWorld.」の rn(w+) 「rnHello」
v は垂直タブ文字 u000B と一致します。 [v]{2,} "vvv"
f の "vvv" は、フォーム フィード文字 u000C と一致します。 [f]{2,} "fff"
n の "fff" は改行文字 u000A と一致します。 rn(w+) 「rHellonWorld」の「rnHello」はエスケープ文字 u001B と一致します。 e 「x001B」の「x001B」
nnnは8進数表現で文字を指定します(nnnは2~3桁)。 w
p{ name } Unicode ユニバーサル カテゴリ内の任意の 1 文字、または name で指定された名前付きブロックと一致します。 「City Lights」
P{ name } の「C」と「L」は、Unicode ユニバーサル カテゴリまたは name で指定された名前付きブロックにない任意の 1 文字と一致します。 P{Lu} 「City」
w の「i」、「t」、「y」は、任意の単語文字に一致します。 w 「Room#1」の「R」、「o」、「m」、「1」
W は単語以外の文字に一致します。 W "Room#1"
の "#" は任意の空白文字と一致します。 ws "ID A1.3"
S の "D" は、空白以外の文字と一致します。 sS "int __ctr"
d の " _" は、任意の 10 進数に一致します。 d の "4" "4 = IV"
D は、10 進数ではない任意の文字と一致します。 "4 = IV" の D " "、"="、" "、"I" および "V"
アンカー
アンカーまたはアトミックなゼロ幅アサーションにより、文字列に応じて一致が成功または失敗します。ただし、エンジンが文字列内で進んだり、文字を使用したりすることはありません。
次の表にアンカー ポイントを示します:
アサーション
説明
パターン
一致
^ 一致は文字列または行の先頭から開始する必要があります。 ^d{3} "567" in "567-777-"
$ 一致は文字列の末尾、または行または文字列の末尾の n より前に発生する必要があります。 -d{4}$ "-2012" in "8-12-2012"
A 一致は文字列の先頭に現れる必要があります。 Aw{3} "Code-007-" の "Code"
Z 一致は文字列の末尾、または文字列末尾の n の前に出現する必要があります。 -d{3}Z "-007" in "Bond-901-007"
z 一致するものは文字列の末尾にある必要があります。 -d{3}z "-901-333" の "-333"
G 一致は前の一致の最後に表示される必要があります。 \G(d) "(1)(3)(5)[7](9)" 一致する "(1)"、"(3)"、および "(5)"
b は w( on に出現する必要があります英数字) と W (英数字以外) 文字の間の境界。 w 「Room#1」の「R」、「o」、「m」、「1」
B の境界で B の一致が発生してはなりません。 Bendw*b「endsendsendendlender」の「ends」と「ender」
グループ構築
グループ構築は、通常、入力文字列の部分文字列をキャプチャするために使用される正規表現の部分式を記述します。
次の表は、グループ化構成要素のリストです。
グループ化構成要素
説明
パターン
一致
( subexpression ) 一致する部分式をキャプチャし、それを 0 から始まるシーケンス番号に割り当てます。 (w)1 "ee" in "deep"
(?subexpression) 一致する部分式を名前付きグループにキャプチャします。 (?w)k "ee" in "deep"
(?subexpression) は、バランシング グループの定義を定義します。 (((?'開く'()[^()]*)+((?'閉じる-開く'))[^()]*)+)*(?(開く)(?!))$ "3 "((1-3)*(3-1))" in +2^((1-3)*(3-1))"
(?: 部分式) は非キャプチャ グループを定義します。 Write(?:Line)? "Console.WriteLine()" の "WriteLine"
(?imnsx-imnsx:subexpression) subexpression で指定されたオプションを適用または無効にします。 Ad{2}(?i:w+)b "A12xl" および "A12XL" in "A12xl A12XL a12xl"
(?= 部分式) ゼロ幅の正の先読みアサーション。 w+(?=.) 「彼はいます。犬は走りました。太陽が出ています
」の「です」、「走った」、「出た」。(?! 部分式) ゼロ幅の否定先読みアサーション。 b(?!un)w+b "sure" と "unsuresure Union used" の "used"
(?
(?
(?> 部分式) 非バックトラック (「貪欲」とも呼ばれる) 部分式。 [13579](?>A+B+) "1ABB 3ABBC 5AB 5AC" の "1ABB"、"3ABB"、および "5AB"
修飾子
修飾子は、前の要素が入力文字列に存在する必要があることを指定します (いくつ一致するには、文字、グループ、または文字クラスのインスタンスが必要です。 修飾子には、次の表にリストされている言語要素が含まれます。
次の表に修飾子を示します。
修飾子
説明
パターン
一致
* 前の要素と 0 回以上一致します。 d*.d ".0", "19.9", "219.9"
+ 前の要素と 1 回以上一致します。 "be+" "been" の "bee"、"bent" の "be"
? 前の要素と 0 回または 1 回一致します。 "rai?n" "ran", "rain"
{ n } 前の要素と正確に n 回一致します。 「1,043.6」の「,d{3}」「,043」、「9,876,543,210」の「,876」、「,543」および「,210」
{ n ,} 前の要素と少なくとも n 回一致します。 "d{2,}" "166", "29", "1930"
{ n , m } 前の要素と少なくとも n 回、m 回以下で一致します。 "19302" in "d{3,5}" "166", "17668", "193024"
*? 前の要素と 0 回以上、ただし可能な限り少ない回数一致します。 d*?.d ".0", "19.9", "219.9"
+? 前の要素と 1 回以上、ただし可能な限り少なく一致します。 "be+?" "been" の "be"、"bent" の "be"
?? 前の要素と 0 回または 1 回、できるだけ少ない回数一致します。 "rai??n" "ran", "rain"
{ n }? 先頭の要素と正確に n 回一致します。 ",d{3}?" "1,043.6" の ",043"、"9,876,543,210" の ",543" および ",210"
{ n ,}? 前の要素と少なくとも n 回一致しますただし、できるだけ少ない回数で。 "d{2,}?" "166"、"29"、"1930"
{ n , m }? 前の要素が一致する回数は n から m の間ですが、回数は少ないですできるだけ。 「193024」の「d{3,5}?」「166」、「17668」、「193」および「024」
後方参照の構築
後方参照により、同じ正規表現内の以前のものを後で識別できます。
次の表は、後方参照構造のリストです。
後方参照構造
説明
パターン
後方参照の数
の一致。 数値の部分式の値と一致します。 (w)1 "seek" の "ee"
kw)k "ee" in "seek"
代替構造
代替構造は、正規表現を変更して、どちらかまたは両方のマッチングを可能にするために使用されます。
次の表に代替構成を示します:
代替構成
説明
パターン
一致
| 垂直バー (|) 文字で区切られた任意の 1 つの要素と一致します。 th(e|is|at) の「the」と「this」は「今日はその日です。」
(?(expression)yes | no ) 正規表現パターンが式マッチングで指定されている場合は、yes と一致します。それ以外の場合は、オプションの no 部分と一致します。式はゼロ幅アサーションとして解釈されます。 (?(A)Ad{2}b|bd{3}b) 「A10 C103 910」の「A10」と「910」
(?( name )yes | no ) name が名前付きまたは番号付きの場合、yes と一致しますキャプチャ グループに一致がある場合は、オプションの番号と一致します。 (?
置換
Replacement は、置換パターンで使用される正規表現です。
次の表は、置換に使用される文字のリストです:
文字
説明
パターン
置換パターン
入力文字列
結果文字列
$number グループ番号で置換 一致した部分文字列。 b(w+)(s)(w+)b $3$2$1 "one two" "two one"
${name} 名前付きグループ名と一致する部分文字列を置き換えます。 b(?
$$ 文字 "$" を置き換えます。 b(d+)s?USD $$$1 "103 USD" "$103"
$& 一致するもの全体をコピーに置き換えます。 ($*(d*(.+d+)?){1}) **$& "$1.30" "**$1.30**"
$` 一致する前に入力文字列のすべてのテキストを置き換えます。 B+ $` "AABBCC" "AAAACC"
$' 一致した入力文字列のすべてのテキストを置換します。 B+ $' "AABBCC" "AACCC"
$+ 最後にキャプチャしたグループを置き換えます。 B+(C+) $+ "AABBCCDD" AACCDD
$_ 入力文字列全体を置き換えます。 B+ $_ "AABBCC" "AAAABBCCCC"
その他の構成要素
次の表は、さまざまなその他の構成要素をリストしています:
Construction
Description
Example
(?imnsx-imnsx) パターンの中央大文字と小文字を区別しないなどのオプションを設定または無効にできます。 bA(?i)bw+b は、「ABA Able Act」
(?#comment) インライン コメントの「ABA」および「Able」と一致します。コメントは最初の閉じ括弧で終了します。 bA(?#A で始まる単語と一致)w+b
# [行末まで] X モードのコメント。 コメントはエスケープされていない # で始まり、行の終わりまで続きます。 (?x)bAw+b#A で始まる単語に一致
Regex クラス
Regex クラスは、正規表現を表すために使用されます。
次の表は、Regex クラスで一般的に使用されるいくつかのメソッドをリストしています:
シリアル番号
メソッドと説明
1 public bool IsMatch( string input )
Regex コンストラクターで指定された正規表現が正規表現であるかどうかを示します。指定された入力文字列内で一致が見つかりました。
2 public bool IsMatch(string input, int startat)
Regex コンストラクターで指定された正規表現が、文字列内の指定された開始位置から始まる、指定された入力文字列内で一致を見つけるかどうかを示します。
3 public static bool IsMatch(string input, string pattern)
指定された正規表現が指定された入力文字列内で一致するかどうかを示します。
4 public MatchCollection Matches( string input )
指定された入力文字列内の正規表現に一致するものをすべて検索します。
5 public string Replace(文字列入力, 文字列置換)
指定された入力文字列のうち、正規表現パターンに一致するすべての一致文字列を指定された置換文字列に置換します。
6 public string[] Split( string input )
入力文字列を部分文字列の配列に分割し、Regex コンストラクターで指定された正規表現パターンで定義された位置に従って分割します。
Regex クラスのプロパティの完全なリストについては、Microsoft の C# ドキュメントを参照してください。
例 1
次の例は、「S」で始まる単語と一致します:
using System; using System.Text.RegularExpressions; namespace RegExApplication { class Program { private static void showMatch(string text, string expr) { Console.WriteLine("The Expression: " + expr); MatchCollection mc = Regex.Matches(text, expr); foreach (Match m in mc) { Console.WriteLine(m); } } static void Main(string[] args) { string str = "A Thousand Splendid Suns"; Console.WriteLine("Matching words that start with 'S': "); showMatch(str, @"\bS\S*"); Console.ReadKey(); } } }
上記のコードがコンパイルされて実行されると、次の結果が生成されます:
Matching words that start with 'S': The Expression: \bS\S* Splendid Suns
实例 2
下面的实例匹配了以 'm' 开头以 'e' 结尾的单词:
using System; using System.Text.RegularExpressions; namespace RegExApplication { class Program { private static void showMatch(string text, string expr) { Console.WriteLine("The Expression: " + expr); MatchCollection mc = Regex.Matches(text, expr); foreach (Match m in mc) { Console.WriteLine(m); } } static void Main(string[] args) { string str = "make maze and manage to measure it"; Console.WriteLine("Matching words start with 'm' and ends with 'e':"); showMatch(str, @"\bm\S*e\b"); Console.ReadKey(); } } }
当上面的代码被编译和执行时,它会产生下列结果:
Matching words start with 'm' and ends with 'e': The Expression: \bm\S*e\b make maze manage measure
实例 3
下面的实例替换掉多余的空格:
using System; using System.Text.RegularExpressions; namespace RegExApplication { class Program { static void Main(string[] args) { string input = "Hello World "; string pattern = "\\s+"; string replacement = " "; Regex rgx = new Regex(pattern); string result = rgx.Replace(input, replacement); Console.WriteLine("Original String: {0}", input); Console.WriteLine("Replacement String: {0}", result); Console.ReadKey(); } } }
当上面的代码被编译和执行时,它会产生下列结果:
Original String: Hello World Replacement String: Hello World
以上就是【c#教程】C# 正则表达式的内容,更多相关内容请关注PHP中文网(www.php.cn)!

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#.NETは、その強力なエコシステムと豊富なサポートのため、マイクロサービスを構築するために人気のある選択肢です。 1)asp.netcoreを使用してRestfulapiを作成して、順序の作成とクエリを処理します。 2)GRPCを使用して、マイクロサービス間の効率的な通信を実現し、注文サービスを定義および実装します。 3)Dockerコンテナ化されたマイクロサービスを介して展開と管理を簡素化します。

C#および.NETのセキュリティベストプラクティスには、入力検証、出力エンコード、例外処理、認証と承認が含まれます。 1)正規表現または組み込みのメソッドを使用して入力を検証して、悪意のあるデータがシステムに入るのを防ぎます。 2)XSS攻撃を防ぐための出力エンコード、httputility.htmlencodeメソッドを使用します。 3)例外処理により、情報の漏れが回避され、エラーが記録されますが、詳細情報はユーザーに返されません。 4)ASP.Netidentityおよび請求に基づく許可を使用して、不正アクセスから申請を保護します。

C言語におけるコロン( ':')の意味:条件付きステートメント:条件付き式とステートメントの分離ブロックループステートメント:初期化、条件付きおよび増分式のマクロ定義の分離:マクロ名とマクロ値の分離単一行コメント:コメントアレイの寸法としてのコロンから行までのコンテンツを表す:アレイの寸法を指定する


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい
