C⼰正則表現のRegex類の使い方は詳しく説明します。
Regexクラスは可変ではない(読み取り専用)正規表現を表します。他のクラスのインスタンスを明示的に作成しない場合に他の正規表現クラスを使用できるようにするための様々な静的方法も含まれている。
正規表現の基礎概観
正規表現とは?
文字列の処理プログラムを作成するとき、複雑な規則に合った文字列を検索する必要があります。正規表現はこれらの規則を記述するためのツールです。言い換えれば、正規表現はテキストルールを記録するコードです。
通常、私達はWINDOWSを使ってファイルを検索する時、ワイルドカード(*と?)を使います。あるディレクトリのWord文書をすべて検索したい場合は、*.docを使って検索できます。ここでは*は任意の文字列として解釈されます。ワイルドカードと同様に、正規表現もテキストマッチングのためのツールです。ワイルドカードよりも、あなたのニーズをより正確に記述することができます。もちろん、価格はより複雑です。
一、C沠正則式符号パターン
単語記号
なぞって述べる
\
特殊な機能を持つ文字を普通の文字に変換したり、逆に変換したりします。
^
入力文字列の開始位置にマッチします。
$
入力文字列の終了位置にマッチします。
*
前のゼロまたは複数のサブ表現にマッチします。
+
前の1つまたは複数のサブ表現にマッチします。
?
前の0回または1回にマッチするサブ表現
{n}
nは負ではない整数であり、前のn次男式と一致する。
{n,}
nは負ではない整数であり、少なくとも前のn番目の表現にマッチする。
{n,m}
mとnは共に非負の整数であり、n<=mは最小n回マッチし、最大m回マッチしている。
?
この文字が他の制限記号(*,+,??),{n},{n,},{n,m}の後ろにある場合、マッチングモードは、検索した文字列にできるだけ少ないマッチをする。
..。
「」以外の任意の文字にマッチします。
(pattern)
patternにマッチしてこのマッチを取得します。
(pattern)
patternにマッチしますが、マッチ結果は得られません。
(?=pattern)
順方向の事前調査は、任意のマッチするpatternの文字列の先頭で検索文字列にマッチします。
(?pattern)
負の方向の事前調査は、任意の不一致のpatternの文字列の先頭で検索文字列と一致します。
x|y
xまたはyにマッチします。例えば、「z_food」は「z」または「food」にマッチすることができます。z|f)ood'は「zood」または「food」にマッチします。
[xyz]
文字セット。含まれる任意の文字にマッチします。例えば、「abc」は「plin」の「a」に適合することができる。
[^xyz]
負の文字セット。含まれていない任意の文字にマッチします。例えば、‘^abc’は、“plin”の‘p’にマッチすることができる。
[a-z]
指定範囲内の任意の文字にマッチします。例えば、‘a-z’は'a'から'z'の範囲内の任意の小文字文字文字にマッチすることができます。
[^a-z]
指定された範囲内の任意の文字にマッチしません。例えば、'^a-z''は'a'〜'z'内の任意の文字にマッチすることができます。
\b
単語の境界を合わせます。単語とスペースの間の位置を指します。
\B
単語以外の境界を満たす
\d
数値文字にマッチすると、[0-9]と同じです。
\D
非数値文字にマッチすると、[^0-9]に相当します。
\f
ページの区切りを合わせる
行の区切りを合わせる
\r
リターンマッチ
\s
任意の空白文字にマッチします。スペース、タブ、改ページなどが含まれます。
\S
空白文字以外のマッチ
\t
タブと一致します。
\v
垂直タブと一致します。は\x 0 bと\cKに相当します
\w
下線を含む単語の文字を一致させます。‘A-Za-z 0-9_’に相当する。
\W
単語以外の文字にマッチします。‘^A-Za-z 0-9_’に相当する。
説明:
正規表現では「\」、「?」、「*」、「^」、「$」、「+」、「(")」、「|」、「{"、[]などの文字は既に特殊な意味を持っていますが、それらを使う本来の意味が必要であれば、それを変換します。たとえば、文字列の中に少なくとも一つの「\」が欲しいなら、正規表現はこう書きます。
二、C((xi)では、正規表現類を使用するには、ソースファイルの先頭に以下の語句を追加してください。
1、スタティックマッチ方法
静的Match法を用いて,ソースにおける最初の整合モードの連続的なサブストリングを得ることができた。
静的なMatch方法は2つの重さがあります。それぞれは
Regex.Match(string input、string pattern);
Regex.Match(string input、string pattern、RegexOptions options);
第一の重負荷のパラメータ表示:入力、モード
第二の重負荷のパラメータは、入力、モード、RegexOptions列挙の「ビット単位または」の組み合わせを表します。
RegexOptionsの列挙の有効な値は以下の通りです。
Comppliedはこのモードをコンパイルするという意味です。
Culture Invariantは文化背景を考慮しないと表しています。
ECMAScriptはECMAScriptに該当すると表しています。この値はIgnoreCase、Multiiline、Comppliedとしか使えません。
ExplicitCaptureは、明示的な名前だけを保存するグループを表します。
IgnoreCaseは入力の大文字と小文字を区別しないことを表します。
IgnorePattern Whitespaceはモード中の無意味な空白を取り除くことを表しており、玡印による注釈を有効にしています。
Multiilineは、複数行のパターンを表し、元の文字^と$の意味を変更し、行の先頭と最後に一致することができます。
Noneは無設定を表しています。この列挙項目は意味がありません。
RightToLeftは右から左にスキャンし、マッチングすると表しています。このとき、静的なMatch方法は右から左に最初のマッチを返します。
Singlelineは単一の行のモードを表し、元の文字を変更します。つまり、改行にマッチします。
注意:MultilineはECMAScriptがない場合、Singlelineと接続できます。SinglelineとMultiilineは互いに反発しませんが、ECMAScriptとは互いに反発します。
2、静的なマッチ方法
この方法の再負荷形態は静的なMatch方法と同じで、入力中の整合モードの集合を表すMatCollectionを返す。
3、静的なIsMatch方法
この方法はブールを返します。同じ静的なMatchを再ロードします。もしモードにマッチするとtrueに戻ります。そうでないとfalseに戻ります。
IsMatch方法は、Matchメソッドに戻る集合が空かどうかということが理解できる。
四、RegEx類の例
1.文字列の置換
例えば、下記のフォーマットで記録されているNAME値をWANGに変更したいです。
string line="ADDR=1234;NAME=ZHANGPHONE=6789","
Regex reg=new Regex(「NAME=(.+)」)
string modified=reg.Replace(line);
修正後の文字列はADDR=1234です。NAME=WANGPHONE=6789
2.文字列マッチング
例えば、先ほどのレコードのNAME値を抽出したいです。
Regex reg=new Regex(「NAME=(.+)」)
Match=reg.Match;
string value=match.Groups[1].Value;
3、Matchの例3
テキストには「SPeed=30.2 mph」が含まれています。この速度値を抽出する必要がありますが、速度の単位は公制でも英制かもしれません。mph、km/h、m/sも可能です。また前後にスペースがあるかもしれません。
string line=「lane=1」speed=30.3 mphaccelleration=2.5 mph/s";
Regex reg=new Regex(@「speed\s*」(\\.)\s*(mph|km/h|m/s*);
Match=reg.Match;
帰りの結果では、match.Groups[1].Valueは数値を含み、match.Groups[2].Valueは単位を含みます。
4、例えば、gpsのGPRMC文字列を復号するには、
Regex reg=new Regex(@\\米ドルGPRMC、[\.]*,[A|V],(-?0-9"*.?[0-9]+,([NS]*),(-0-9"*.?[0-9'+,([EW]*),*";
経度、緯度の値が得られますが、以前はコードが何十行も必要でした。
五、System.Text.Reglar Expressions名前空間の説明
この名前空間には8つのカテゴリーがあり、1つのエニュメレーション、1つの依頼があります。それぞれ:
Capture:一回のマッチの結果を含みます。
Capture Collection:Captureのシーケンス;
グループ記録の結果は、Captureによって引き継がれます。
グループワーク:キャプチャグループの集合を表す
マッチ:一次表現のマッチング結果は、Groupによって継承されます。
Match Collection:Matchのシーケンス;
Match Everalator:代替操作を実行する際に使用する依頼;
Regex:コンパイルした表現の例。
RegexComplationInfo:正規表現を独立したプログラムセットにコンパイラするための情報を提供します。
RegexOptionsは正規表現を設定するための列挙値を提供します。
Regexクラスには、いくつかの静的な方法が含まれている。
Escape:文字列のregexの変換子を変換します。
IsMatch:文字列で表現が一致する場合、この方法はブール値を返します。
Match:Matchの例を返します。
マッチ:一連のマッチを返す方法。
Replace:マッチした表現を置換文字列で置換します。
Split:表式によって決められた一連の文字列を返します。
Unescape:文字列の中の変換文字に変換しません。
正規表現の基礎概観
正規表現とは?
文字列の処理プログラムを作成するとき、複雑な規則に合った文字列を検索する必要があります。正規表現はこれらの規則を記述するためのツールです。言い換えれば、正規表現はテキストルールを記録するコードです。
通常、私達はWINDOWSを使ってファイルを検索する時、ワイルドカード(*と?)を使います。あるディレクトリのWord文書をすべて検索したい場合は、*.docを使って検索できます。ここでは*は任意の文字列として解釈されます。ワイルドカードと同様に、正規表現もテキストマッチングのためのツールです。ワイルドカードよりも、あなたのニーズをより正確に記述することができます。もちろん、価格はより複雑です。
一、C沠正則式符号パターン
単語記号
なぞって述べる
\
特殊な機能を持つ文字を普通の文字に変換したり、逆に変換したりします。
^
入力文字列の開始位置にマッチします。
$
入力文字列の終了位置にマッチします。
*
前のゼロまたは複数のサブ表現にマッチします。
+
前の1つまたは複数のサブ表現にマッチします。
?
前の0回または1回にマッチするサブ表現
{n}
nは負ではない整数であり、前のn次男式と一致する。
{n,}
nは負ではない整数であり、少なくとも前のn番目の表現にマッチする。
{n,m}
mとnは共に非負の整数であり、n<=mは最小n回マッチし、最大m回マッチしている。
?
この文字が他の制限記号(*,+,??),{n},{n,},{n,m}の後ろにある場合、マッチングモードは、検索した文字列にできるだけ少ないマッチをする。
..。
「」以外の任意の文字にマッチします。
(pattern)
patternにマッチしてこのマッチを取得します。
(pattern)
patternにマッチしますが、マッチ結果は得られません。
(?=pattern)
順方向の事前調査は、任意のマッチするpatternの文字列の先頭で検索文字列にマッチします。
(?pattern)
負の方向の事前調査は、任意の不一致のpatternの文字列の先頭で検索文字列と一致します。
x|y
xまたはyにマッチします。例えば、「z_food」は「z」または「food」にマッチすることができます。z|f)ood'は「zood」または「food」にマッチします。
[xyz]
文字セット。含まれる任意の文字にマッチします。例えば、「abc」は「plin」の「a」に適合することができる。
[^xyz]
負の文字セット。含まれていない任意の文字にマッチします。例えば、‘^abc’は、“plin”の‘p’にマッチすることができる。
[a-z]
指定範囲内の任意の文字にマッチします。例えば、‘a-z’は'a'から'z'の範囲内の任意の小文字文字文字にマッチすることができます。
[^a-z]
指定された範囲内の任意の文字にマッチしません。例えば、'^a-z''は'a'〜'z'内の任意の文字にマッチすることができます。
\b
単語の境界を合わせます。単語とスペースの間の位置を指します。
\B
単語以外の境界を満たす
\d
数値文字にマッチすると、[0-9]と同じです。
\D
非数値文字にマッチすると、[^0-9]に相当します。
\f
ページの区切りを合わせる
行の区切りを合わせる
\r
リターンマッチ
\s
任意の空白文字にマッチします。スペース、タブ、改ページなどが含まれます。
\S
空白文字以外のマッチ
\t
タブと一致します。
\v
垂直タブと一致します。は\x 0 bと\cKに相当します
\w
下線を含む単語の文字を一致させます。‘A-Za-z 0-9_’に相当する。
\W
単語以外の文字にマッチします。‘^A-Za-z 0-9_’に相当する。
説明:
正規表現では「\」、「?」、「*」、「^」、「$」、「+」、「(")」、「|」、「{"、[]などの文字は既に特殊な意味を持っていますが、それらを使う本来の意味が必要であれば、それを変換します。たとえば、文字列の中に少なくとも一つの「\」が欲しいなら、正規表現はこう書きます。
二、C((xi)では、正規表現類を使用するには、ソースファイルの先頭に以下の語句を追加してください。
using System.Text.RegularExpressions;
三、RegEx類でよく使われる方法1、スタティックマッチ方法
静的Match法を用いて,ソースにおける最初の整合モードの連続的なサブストリングを得ることができた。
静的なMatch方法は2つの重さがあります。それぞれは
Regex.Match(string input、string pattern);
Regex.Match(string input、string pattern、RegexOptions options);
第一の重負荷のパラメータ表示:入力、モード
第二の重負荷のパラメータは、入力、モード、RegexOptions列挙の「ビット単位または」の組み合わせを表します。
RegexOptionsの列挙の有効な値は以下の通りです。
Comppliedはこのモードをコンパイルするという意味です。
Culture Invariantは文化背景を考慮しないと表しています。
ECMAScriptはECMAScriptに該当すると表しています。この値はIgnoreCase、Multiiline、Comppliedとしか使えません。
ExplicitCaptureは、明示的な名前だけを保存するグループを表します。
IgnoreCaseは入力の大文字と小文字を区別しないことを表します。
IgnorePattern Whitespaceはモード中の無意味な空白を取り除くことを表しており、玡印による注釈を有効にしています。
Multiilineは、複数行のパターンを表し、元の文字^と$の意味を変更し、行の先頭と最後に一致することができます。
Noneは無設定を表しています。この列挙項目は意味がありません。
RightToLeftは右から左にスキャンし、マッチングすると表しています。このとき、静的なMatch方法は右から左に最初のマッチを返します。
Singlelineは単一の行のモードを表し、元の文字を変更します。つまり、改行にマッチします。
注意:MultilineはECMAScriptがない場合、Singlelineと接続できます。SinglelineとMultiilineは互いに反発しませんが、ECMAScriptとは互いに反発します。
2、静的なマッチ方法
この方法の再負荷形態は静的なMatch方法と同じで、入力中の整合モードの集合を表すMatCollectionを返す。
3、静的なIsMatch方法
この方法はブールを返します。同じ静的なMatchを再ロードします。もしモードにマッチするとtrueに戻ります。そうでないとfalseに戻ります。
IsMatch方法は、Matchメソッドに戻る集合が空かどうかということが理解できる。
四、RegEx類の例
1.文字列の置換
例えば、下記のフォーマットで記録されているNAME値をWANGに変更したいです。
string line="ADDR=1234;NAME=ZHANGPHONE=6789","
Regex reg=new Regex(「NAME=(.+)」)
string modified=reg.Replace(line);
修正後の文字列はADDR=1234です。NAME=WANGPHONE=6789
2.文字列マッチング
例えば、先ほどのレコードのNAME値を抽出したいです。
Regex reg=new Regex(「NAME=(.+)」)
Match=reg.Match;
string value=match.Groups[1].Value;
3、Matchの例3
テキストには「SPeed=30.2 mph」が含まれています。この速度値を抽出する必要がありますが、速度の単位は公制でも英制かもしれません。mph、km/h、m/sも可能です。また前後にスペースがあるかもしれません。
string line=「lane=1」speed=30.3 mphaccelleration=2.5 mph/s";
Regex reg=new Regex(@「speed\s*」(\\.)\s*(mph|km/h|m/s*);
Match=reg.Match;
帰りの結果では、match.Groups[1].Valueは数値を含み、match.Groups[2].Valueは単位を含みます。
4、例えば、gpsのGPRMC文字列を復号するには、
Regex reg=new Regex(@\\米ドルGPRMC、[\.]*,[A|V],(-?0-9"*.?[0-9]+,([NS]*),(-0-9"*.?[0-9'+,([EW]*),*";
経度、緯度の値が得られますが、以前はコードが何十行も必要でした。
五、System.Text.Reglar Expressions名前空間の説明
この名前空間には8つのカテゴリーがあり、1つのエニュメレーション、1つの依頼があります。それぞれ:
Capture:一回のマッチの結果を含みます。
Capture Collection:Captureのシーケンス;
グループ記録の結果は、Captureによって引き継がれます。
グループワーク:キャプチャグループの集合を表す
マッチ:一次表現のマッチング結果は、Groupによって継承されます。
Match Collection:Matchのシーケンス;
Match Everalator:代替操作を実行する際に使用する依頼;
Regex:コンパイルした表現の例。
RegexComplationInfo:正規表現を独立したプログラムセットにコンパイラするための情報を提供します。
RegexOptionsは正規表現を設定するための列挙値を提供します。
Regexクラスには、いくつかの静的な方法が含まれている。
Escape:文字列のregexの変換子を変換します。
IsMatch:文字列で表現が一致する場合、この方法はブール値を返します。
Match:Matchの例を返します。
マッチ:一連のマッチを返す方法。
Replace:マッチした表現を置換文字列で置換します。
Split:表式によって決められた一連の文字列を返します。
Unescape:文字列の中の変換文字に変換しません。