‫お帰りなさい｡
‫このビデオでは､ 正規表現について説明します｡
‫そして､ 正規表現エンジンが入力テキストにマッチしようとする言語やパターンである｡
‫そこで､ 入力テキストを作成し､ 正規表現を使って特定のパターンをチェックすることができます｡
‫しかも､ それが超強力なんです｡
‫また､ Cシャープだけでなく､ ほとんどすべてのプログラミング言語で使用されています｡
‫そして､ 例えば､ ユーザーが正しいメールアドレスを入力したか､ 正しいリンクを入力したか､
‫一般的にそのようなことを調べるのに便利です｡
‫だから､ それらを把握するために正規表現を使い､ 特定のパターンを検索して何かをすることができる｡
‫いるのなら､ あるいはいないのなら､ 何もするな､ などです｡
‫そしてまあ､ 私はこのウェブサイトで正規表現言語をクイックリファレンスでチェックしているのですが､
‫ものを見つけるため､ あるいはパターンを作るために､ 実にさまざまなエスケープ文字があるんですね｡
‫そして､ ここにはたくさんのものがありますが､ その中でも特に重要なものを使っていこうと思います｡
‫いちいち説明するつもりはありませんが､ いろいろな例を見ていただくことで､ 正規表現を確実に理解することができますし､
‫その後､ 必要になったときに横に戻って他のものを使うことも超簡単です｡
‫わかりました｡
‫では､ Visual Studioに戻って､ ちょっとしたサンプルテキストを作成してみましょう｡
‫それでは､ 新しい正規表現プロジェクトを作成してみましょう｡
‫ここにあるのは
‫好きなように名前をつけて､ ここにも新しいファイルを作りましょう｡
‫新商品です｡
‫そして今回はクラスを作らず､ ごく基本的なテキストファイルで済ませます｡
‫では､ ここにテキストファイルがありますが､ これをサンプルテキストと呼ぶことにします｡
‫では､ そのサンプルのテキストファイルを開いてみましょう｡
‫そして､ そこにいくつかのコードやテキストをコピー＆ペーストしただけです｡
‫そしてご覧のように､ 数字､ 電話番号､ ドイツの電話番号など､ アルファベット､ いくつかのラララ文字などです｡
‫そこで､ 検索する特定のパターンをマークするために､ 正規表現を使用することにしました｡
‫そこで､ コントロールFまたはコマンドFを押して､ ここにある検索ツールを表示させます｡
‫そして､ ここに来たら､ これを押して､ 正規表現を使うか､ alt eを押して､ 正規表現を使うようにします｡
‫さて､ ここでサーチコンソールは正規表現を適用します｡
‫では､ 私たちの正規表現は何に使うかというと､ その一部です｡
‫まずは､ とても簡単なことから始めましょう｡
‫ということで､ まずはタブで進めていきます｡
‫では､ バックスラッシュ・タブにしましょう｡
‫そして今､ ご覧のように､ タブがマークされています｡
‫だから私の場合､ もう少し大きくしてよく見えるようにします｡
‫ここでは､ そのヒントをご紹介します｡
‫さらにタブを作ってみます｡
‫今お見せしたように､ タブはすべてここにマークされています｡
‫すべてハイライト表示されます｡
‫では､ バックスラッシュnですべての改行箇所を探してみましょう｡
‫だから､ ここは結構､ エンターを押したところなんです｡
‫もう少しエンターキーを押させてください｡
‫このように､ Enterキーを押して改行するたびに､ このバックスラッシュnが表示されるので､
‫これで改行されたかどうかを判断することができます｡
‫では､ そのバックスラッシュ・エンドなどは何から得ているのでしょうか？
‫まあ､ ここの正規表現､ 言語､ クイックリファレンスのところにありますが､ ちょっとしたテキストファイルのスニペットも作りました｡
‫それでは､ 小さなファイルを作成して､ そこに貼り付けてみましょう｡
‫この講義のアセットからダウンロードできますので､ スニペット､ ドットテキストと呼ぶことにします｡
‫ここでは､ 例えばタブのような文字エスケープを使用しています｡ したがって､ 私の文字列（例のテキスト・ファイル､
‫ファイル全体）にタブがあるかどうかを調べることができます｡
‫ここでは､ ファイル全体をチェックし､ ファイル内の改行やタブをひとつひとつチェックしています｡
‫かなりね｡
‫それじゃ
‫例えば､ ドットはワイルドカードで､ バックスラッシュn以外の任意の1文字にマッチします｡
‫それが本当なのかどうか､ 確認してみましょう｡
‫そこで､ 新しいラインを用意しました｡
‫ここでもう一度､ Nキーで確認してみましょう｡
‫ご覧のように､ すべての新ラインを入手することができます｡
‫では､ ご覧のように点と点を使ってみましょう｡
‫任意の1文字にマッチする｡
‫つまり､ このドットやドットが何をするかというと､ ワイルドカードなんです｡
‫だから､ 全部に印をつけたいなら､ まあ､ そういうことです｡
‫つまり､ 新しい行を除いたすべてをチェックアウトしていることがわかります｡
‫しかし､ そうかと思えば､ 新しい線も記されている｡
‫だから､ 新しい線を作るたびに､ このドットがついたままなんです｡
‫わかりました｡
‫では､ 次をチェックしましょう｡
‫その中からいくつか紹介し､ それらを組み合わせてクールでカッコいいものを使っていこうと思います｡
‫わかりました｡
‫そのため､ 任意のデジタルや任意の10進数にマッチします｡
‫さっそくチェックしてみましょう｡
‫バックスラッシュ Dは桁の略｡
‫そしてご覧のように､ ここにある私の数字､ 1､ 2､ 3､ 4､ 5､ 67890はすべてマークされており､ ここにある私の数字はすべてマークされています｡
‫その間の値､ たとえばプラス記号やハッシュタグなどは､ マークされていません｡
‫つまり､ どんな数字もこの正規表現のパターンにマッチすることになる｡
‫バックスラッシュdは10進数の略｡
‫バックスラッシュ大文字のdはその逆で､ ここでもわかるように数字以外を取り込んでしまうのです｡
‫空白が必要な場合は､ バックスラッシュsを使用します｡
‫そして､ ファイル内にある余白を取得します｡
‫ですから､ 例えば､ ファイルの中の空白を取り除きたい場合､ このパターンを使って､ そのパターンに一致するものをすべて取り除くことができます｡
‫反対側のCapital sは､ ホワイトスペースでないすべてのものです｡
‫だから､ 見ての通り､ 資本はかなり逆なんです｡
‫いつもです｡
‫だから､ DXはすべて数字なんです｡
‫Capital Dはexcept numbersなので､ 数字以外は全てです｡
‫よし､ じゃあ調べてみようww何か言葉が出るかな｡
‫缶文字と数字が含まれています｡
‫そこで､ ここではすべての数字とABCDなどのすべての文字が表示されます｡
‫だから､ ここにはアルファベット全部と､ 私の数字全部が記されている｡
‫ドットはマークされず､ スラッシュやメタ文字､ 特定の文字もマークされず､ どちらも追加されないことがおわかりいただけると思います｡
‫わかりました｡
‫他のすべてを持ちたい場合は､ 大文字のWを使います｡ 例えば､ LAを持ちたい場合は､ la laを検索してみましょう｡
‫ご覧のように､ 小文字でも大文字でも検索できるんです｡
‫私のラララのテキストは､ ラララララなどを歌いたいのであれば､ ここにマークされているものです｡
‫しかし､ ご覧の通り､ 文字通りの大文字を使ったり使わなかったりしても､ すべてそのパターンにマッチしているのです｡
‫わかりました｡
‫また､ 特定の辺にバインドされているものだけを表示させたい場合は､
‫BeckやD l aを使用すると､ 左側にバインドされているものだけが表示されるようになります｡
‫つまり､ LAの前に何もないか､ LAの前に空白があるか､ そのどちらかのみがマークされることになる｡
‫このように､ このLAにもマークは付いていません｡
‫それは､ boundaryという単語が左側にないからです｡
‫では､ スニペットに戻って､ ここにあるものを確認してみましょう｡
‫そこで､ 私たちが注目すべきなのは､ キャラクターグループです｡
‫次に､ 否定記号です｡
‫つまり､ アンカーは､ 文字列や行の先頭からマッチする必要があるのです｡
‫もしそれを使うなら､ ダブルドル記号とマッチは､ 文字列の最後かaの前になければなりません｡
‫文字列の行末にある次の行｡
‫かなりね｡
‫よし､ それなら
‫そうだ､ あれを調べてみよう｡
‫例えば､ サンプルファイルに戻りましょう｡
‫サーキュムフレックス
‫そして､ ご覧のように､ これにはマークがついています｡
‫つまり､ 文字列の先頭にあるわけです｡
‫Aを目指そう｡
‫このように､ 弦の最初にAがありますし､ Mが欲しければそれも弦の最初にあります｡
‫そうそう､ そうなんです｡
‫文字列の末尾にあるものが欲しい場合はどうすればいいのでしょうか？
‫まあ､ 全文があるのがミソですね｡
‫つまり､ このサンプルテキストファイル全体は､ ほとんど1つの文字列なのです｡
‫だから､ 最後に持つなら｡
‫ご覧のように､ 文字列の末尾に1文字あり､ それがこのプラスです｡
‫ですから､ プラス､ ところで､ とか､ DOTとか､ そういうメトロ文字を使いたい場合は､ それらをエスケープする必要があります｡
‫だから､ 探したら､ 逃げないといけないんです｡
‫そして､ どうすれば彼らから逃れられるのか？
‫まあ､ バックスラッシュを使えばエスケープできるんですけどね｡
‫つまり､ バックスラッシュ・プラスがここにプラスを与えてくれるのです｡
‫ご覧のように､ 文字通りのプラスアルファを実現しました｡
‫そこで､ そのままプラスを入力すると､ ご覧のように､ このプラスは見つかりません｡
‫そして､ それはメタ文字であるため､ 正規表現を用いて検索する場合はエスケープする必要があるからです｡
‫だからバックスラッシュ・プラスでプラスが出る｡
‫そして､ ご覧のように､ こちらのプラスも､ こちらのプラスと同じようにマークされています｡
‫しかし､ 文字列の最後に1つだけ表示させたい場合､ 先ほど言ったように､ このテキスト全体が1つの文字列である場合､
‫単にドル記号を使うだけで､ このプラスがマークされていることがわかるようになったのです｡
‫しかし､ ここのプラスがマークされていなかったり､ 強調されていなかったりするのです｡
‫では､ 早速レンジの実射程を見てみましょう｡
‫ご覧のように､ この文字グループは､ 文字グループ内の1文字または任意の1文字にマッチします｡ デフォルトでは､
‫大文字と小文字を区別してマッチします｡
‫だからキャラクターグループ｡
‫チェックしてみましょう｡
‫サンプルテキストに入りましょう｡
‫そして､ その角括弧の中に､ AからZのようなものを進めていくことができます｡
‫これで､ AからZまでのすべての文字がハイライトされるようになりました｡
‫そのため､ ご覧のようにすべての文字がハイライトされています｡
‫aからfまでしかない場合､ ご覧の通り､ fだけがハイライトされ､ ご覧の通り､ 気にならないのです｡
‫大文字だけでなく､ 小文字も扱えます｡
‫そして､ Visual Studioはデフォルトではこのことを気にしていないようです｡
‫大文字と小文字は区別されます｡
‫つまり､ 私たちの場合､ 文字グループはご覧のように大文字と小文字を区別していませんでした｡
‫だから､ どちらかが必要なんです｡
‫わかりました｡
‫しかし､ 確認したい場合や他のケースでは､ 例えばA to Zをあんな風に使ったり､ A to Zをあんな風に使ったりする必要があります｡
‫では､ 小文字の大文字と上図の大文字があるのでしょうか？
‫かなりね｡
‫わかりました｡
‫つまり､ それがひとつのグループの例となるわけです｡
‫ここでは､ どんな文字でも使うことができます｡
‫ですから､ ご覧のように､ そこに入れたすべてのもの､ すべての文字が､ 今､ 同様にマークされていますし､ 今､ 同様にハイライトされているのです｡
‫つまり､ このグループ内では､ グループ内にあるものはすべてハイライト表示されるわけです｡
‫これで､ 他の範囲も桁数で作成できるようになりました｡
‫では､ 今あるすべての数字､ 1から5までの数字を揃えたい､ としましょう｡
‫1から5までの数字が全部入る ゼロは含まれない
‫だから､ 1､ 2､ 3､ 4､ 5｡
‫その逆を望むなら？
‫それなら､ また円周率を使うことができますね｡
‫つまり､ circumflex 1 to 5は､ 1から5を除くすべての数字が得られるということだ｡
‫では､ 例えば7以外の数字をすべて揃えたい場合､ 何を入力すればいいのでしょうか｡
‫わかりました｡
‫理解してもらえたかな？
‫ただのcircumflex 7です｡
‫さて､ では具体的にどのようにパターンを把握すればよいのでしょうか｡
‫なぜなら､ ここまでは､ 非常に汎用的な､ 正規表現を使用していたからです｡
‫非常にシンプルなキャラクターを使ったりしていただけです｡
‫では､ このように具体的に､ 例えば3桁､ さらに3桁､ そして4桁と､ ダッシュで区切った構造にしたい場合はどうすればいいのでしょう｡
‫では､ どうすればいいのか？
‫まあ､ 一桁と言いながら､ もう一桁､ もう一桁と言いながら｡
‫そして､ ご覧のように､ 今あるすべてのパターン､ あるいはここにあるすべての数字に当てはまります｡
‫それは､ どれも最低でも3つの数字だからです｡
‫そこで､ ここにもう一つ追加すると､ ご覧のように1行目が強調表示されます｡
‫そして､ この3行目では､ 少なくとも4つの数字がつながっているものだけが強調表示されます｡
‫3行目と4行目を同じパターンでハイライトしたい場合は､
‫次のようにします｡
‫これは､ この構造ですべての電話番号を把握する方法ですが､ もっと簡単な方法があります｡
‫嫌ならこんなにDを入力しなくていいんです｡
‫もっと単純に､ 中括弧の中で「家」と言ったり､ 前述のエスケープ文字やパターンをいくつ用意すればいいのか､
‫次のような方法を使うことができます｡
‫だから､ この場合は､ よし､ Dを3つ､ つまり3桁にしたい､ と言うのです｡
‫同じことは､ 2つ目のエントリ､ あるいは情報の2番目の部分についても言えます｡
‫そして最後の1枚は､ ご覧のように3枚では足りません｡
‫4つ必要です｡
‫だから､ 今はその2つのパターンに合わせているんです｡
‫では､ マイナスだけでなく､ ドットやハッシュも欲しい場合はどうすればいいのでしょうか？
‫まあ､ どっちでもいいんですけど､ そうするとご覧の通り､ 全部入っているんですよ｡
‫このように､ 3つの数字があり､ 次に何かがあり､ さらに多くの数字があるわけです｡
‫そこで､ 実はここにこの作品があるのです｡
‫そのため､ 7行目もマークされている｡
‫8も同じです｡
‫見ての通り､ 49の後に始まっています｡ つまり､ ここにもこのパターンがあるのです｡
‫でも､ そういうパターンは嫌なんです｡
‫もっと正確に伝えたい｡
‫例えば､ ハッシュタグを入れたいんです｡
‫マイナスとドットは欲しいけど､ この特定の構造だけは欲しい｡
‫では､ どうすればいいのか？
‫つまり､ ドットの代わりに角括弧を使い､ それが小さなグループ検索になるのです｡
‫だから､ ここでは「点」なのか「線」なのか､ どちらかだと言っています｡
‫あるいはハズレか､ マイナスか｡
‫ですから､ 今お見せしたように､ その3つのキャラクターはすべて問題ないのです｡
‫でも､ それ以外は何もない｡
‫さて､ ここで1文字目にも使いたい場合｡
‫だから､ ここに点があったんです｡
‫だから､ マイナスとドットとハッシュがかかったんです｡
‫でも､ 3つとも欲しいし､ それ以外も欲しい｡
‫では､ 例えばここにAを入力した場合はどうでしょうか｡
‫まあ､ 今はもうそんなことはないんですけどね｡
‫でも､ ドットだけなら､ Aでいいんです｡
‫しかし､ そこにあった私のグループを入力すると､ 私の特定の小さなグループ検索ができます｡
‫ということで､ ここはちょっとグループ検索｡
‫今はもう含まれていないので､ その3人のうちの1人でないとダメなんです｡
‫わかりました｡
‫もし､ あなたがチャレンジしたいと感じ､ 本気で取り組むのであれば､ その3つの数字すべてに対応する仕組みを作ってください｡
‫つまり､ これら3つの異なる番号のパターンをすべて作成します｡ これらは､ ドイツで携帯電話番号を作成するための3つの異なる方法だからです｡
‫というのが､ 大まかな構造です｡
‫つまり､ これはドイツからかけた場合､ これはドイツ以外からかけた場合､ そちらも同様です｡
‫つまり､ プラスかダブルゼロで､ 一般的に国外の人に電話をかける場合は､
‫プラスに国番号を付ける必要があります｡
‫そして､ このプラスを表すゼロゼロも同じです｡
‫わかりました｡
‫だから､ やろうと思えば､ これの構造を作ることができるんです｡
‫結構難しいんですよ｡
‫その前に､ まだひとつ見せておきたいことがあるんです｡
‫そして､ もしかしたら､ ひとつだけでなく､ もう少しのことかもしれません｡
‫では､ まず､ パイプを先に｡
‫だから､ プラス49にしたいとか､ ゼロゼロ49のようなものにしたいとか､ そういうことです｡
‫さて､ それだけではうまくいきません｡
‫それはなぜでしょうか？
‫さて､ スニペットを見ると､ qualifiersがありますが､ まだqualifiersは使っていませんね｡
‫そしてそれは､ これから必要なことなのです｡
‫グループ化コンストラクトやオルタネートコンストラクトも同じことです｡
‫というわけで､ これから使うのはこれらです｡
‫それらを確認してから､ その番号の全体構造を作っていく必要があります｡
‫そこで､ まずは交替構文と修飾語を使うことから始めてみましょう｡
‫つまり､ プラスは前の要素に1回以上マッチすると言うことです｡
‫まあ､ そんなことはしたくないんですけどね｡
‫ただ､ 文字通りのプラスが欲しいです｡
‫また､ ご存知の通り､ プラスはメタ文字なのでエスケープする必要があります｡
‫そこで､ プラスの前に必要なのはバックスラッシュです｡
‫そして､ ここでパイプを使っているのがおわかりいただけると思います｡
‫だから､ プラス49かゼロゼロ49のどちらかだと言っているんです｡
‫そして､ ご覧のように､ これらの構造またはパターンがここにマークされ､ また､ ここにある私の数字が強調表示されています｡
‫このパイプがそうなっているんですね｡
‫どちらかです｡
‫だから､ 私たちが見ている全体の数字の中で､ どれかが真実でなければならないのです｡
‫それならいいんです｡
‫それは数字だけでなく､ キャラクターにも言えることです｡
‫ですから､ 例えば､ 私がMr. とMrs. という意味で､ M R pipe M's を使っています｡
‫またはMs. は事実でなければならない｡
‫そして､ それは私たちのこのケースでも同じです｡
‫つまり､ これがeither orで､ ここにあるように､ 交互に並べた構成です｡
‫それから､ グループ化の構成は､ 見ておかなければならないものです｡
‫そして､ それらを見るためには､ ここのリンクを見るのが一番いいと思うんです｡
‫ここでは､ HTTPSとHTTPのリンクがあり､ W､ W､ Wがあるか､ ないかのどちらかです｡
‫つまり､ ここには4種類のリンクがあるわけです｡
‫そして､ グループを使いたい場合､ 例えばこのグループw w wを使いたいのですが､ ご覧の通り､ 全てのリンクに当てはまるわけではありません｡
‫そこで､ リンクを見つけるために､ まずHTTPのsにアクセスする必要があり､ 次にこのような構造になっています｡
‫今のところ､ すべて順調です｡
‫そして今､ もし私がその2つをまだ活動させたいなら､ このグループをチェックする必要がありますww なぜなら､ ここではそうであって､ ここではそうでないからです｡
‫では､ どうすればいいのか？
‫さて､ グループを使う必要があるので､ グループ w w w と､ ここまで見てきたように､ このリンクだけをここにします｡
‫最初にハイライト表示されます｡
‫でも､ このクエスチョンマークを入力すれば､ 問題ないんです｡
‫だから､ グループw w でも組み合わせて使っているんです｡
‫クエスチョンマークと､ このクエスチョンマークは何をするものなのか？
‫まあ､ 量詞ですから､ 前の要素に0回でも1回でもマッチするんですけどね｡
‫つまり､ 修飾子は､ 前の要素に0回以上マッチする星印､ そして前の要素に1回以上マッチするプラス記号です｡
‫そして､ クエスチョンマークは､ 前の要素に0回または1回マッチします｡
‫また､ 私たちに何回してほしいか言うこともできます｡
‫その通りです｡
‫つまり､ 前の要素にマッチしているわけです｡
‫その通りです｡
‫終了時間､ レンジにも｡
‫だから､ 少なくともエンドタイム｡
‫ただし､ MX回以上またはそれ以下｡
‫ということで､ 使える量詞が違うんですね｡
‫グループ化の例を1つ､ Wをグループ化する例を1つ､ そしてクエスチョンマークを使った修飾子の例を1つ見ていただきました｡
‫ですから､ ご覧のように､ どちらのものもまだ現役です｡
‫だから､ このw w wとないものはまだ現役で､ ここは実はw w wのドットなんです｡
‫だから､ このドットも含まれているのです｡
‫そして､ クエスチョンマークの後に､ チュートリアル・ドット・ユーと言えばいいんです｡
‫つまり､ どちらのものも活躍しているわけです｡
‫なるほど｡
‫では､ 話を戻しましょう｡
‫その数字をすべて活躍させるためには､ まだまだこの小さな挑戦が必要です｡
‫そして､ 今までに見てきたもので､ それができるようになっているはずです｡
‫結構大変なんですよ｡
‫結構時間がかかるんですよ､ 30分くらいかな｡
‫非常に基本的な例とはいえ､ これまで学んだことや､ ここで見たスニペットに基づいて理解するには､
‫しばらく時間がかかるかもしれません｡
‫ですから､ スニペットファイルをダウンロードして､ さまざまな文字クラス､ 文字エスケープ､ アンカーなどを見て､
‫試してみるのが一番かもしれませんね｡
‫それは､ やはり､ 難しいですね｡
‫あなたが困難な課題のように感じていない場合は､ すべてのWebサイトのリンクを見つけるか､ よく､ すべてのWebサイトのリンクをマークしたり､
‫それらのすべてを強調することであろう､ より簡単な課題を待っています｡
‫さて､ これでドイツの携帯電話番号を検索するためのパターンを作成するために必要なことはすべてわかったと思います｡
‫そして､ 考えなければならないことがひとつあります｡
‫つまり､ 常にゼロかプラス49かa00 49で始まり､ その後に1が続くのです｡
‫だから､ いつもそうなんです｡
‫ご覧のように､ ここに1つ､ あそこに1つ､ ここに1つという具合です｡
‫次の数字は6か7のどちらかなので､ ここではそれ以外の数字は許されない｡
‫そして､ 次の桁（この場合は4桁目）は､ 任意の数字にすることができます｡
‫そして､ スラッシュと以下がちょうど8つの数字になります｡
‫そして､ その8つの数字はどんな数字でもいいわけですから､ 10種類の数字のどれでもいいわけです｡
‫というわけで､ 概ねそのような構成になっています｡
‫ぜひ､ それを構築してみてください｡
‫本格的に挑戦する気持ちになれば､ 簡単なことではありません｡
‫セットアップにかなり時間がかかることもあります｡
‫でも､ そのために必要なものを見ていただいたので､ まあ､ 試しにスニペットをチェックしてきてください｡
‫だから､ いつもスニペットに戻って解明するのですが､ これがなかなか難しいのです｡
‫もし､ このままではうまくいかない､ この3つの数字がすべてハイライトされないと感じたら､
‫その後に説明しますから大丈夫です｡
‫わかりました｡
‫では今から説明します､ 自分でやってみたい人はビデオを一時停止してください｡
‫なるほど｡
‫だからまず､ ゼロか､ プラス49か､ a00 49のいずれかです｡
‫では､ まずプラス49からですが､ これにはグループを使います｡
‫このように､ 文字通りのプラスを使うには､ バックスラッシュのプラス49が必要なのです｡
‫そうすると､ 代替案はa0049となります｡
‫つまり､ プラス49か0049のどちらかです｡
‫そして､ もうひとつの選択肢は､ ただの0点です｡
‫だから､ 見ての通り､ このゼロのところだけなんです｡
‫しかし､ ご覧のとおり､ 他のすべての製品もアクティブになりました｡
‫他のゼロもすべてアクティブです｡
‫そして､ ここでクエスチョンマークを付けますが､ ゼロがあることもあれば､ ゼロがないこともあると言うことです｡
‫ですから､ そのような場合は､ その2つのケースにはありません｡
‫その場合だけ､ ゼロになるんです｡
‫では次に､ このクエスチョンマークの意味を確認してみましょう｡
‫前の要素に0回または1回一致することを意味する｡
‫そのため､ この2つのケースでは0､ 8行目では1となっています｡
‫なるほど｡
‫そうではないんです｡
‫それは数字の上辺だけです｡
‫そうですね｡
‫1をフォローする｡
‫だから､ 今はゼロイチ､ そして6や7があるんです｡
‫そこで､ もう一度グループを作り､ 括弧の中に6､ 5､ 7と書いておきます｡
‫今のところすべて良好､ ならば何番でもいい｡
‫つまり､ バックスラッシュDを使い､ スラッシュを入れ､ さらに別の数字を入れればいいわけです｡
‫しかも､ 1桁ではなく､ 8桁です｡
‫だから､ よし､ 8桁にしよう､ となればいいのです｡
‫そういう構造になっています｡
‫このすぐ下に追加しておきます｡
‫それが私たちのパターンなんですね｡
‫ドイツの電話番号を取得するためには､ まあ､ 少なくともここで見ているものと､ 一般的には､ すべてのドイツの電話番号を見つける必要があります｡
‫さて､ もちろん国番号でも同じことをやってみましょう｡
‫ですから､ あなたがどこから来たにせよ､ どこに住んでいるにせよ､ 電話番号や携帯電話番号を調べて､ その携帯電話番号の構造がどうなっているかを見て､
‫そのパターンを構築してみてください｡
‫必要であれば､ それを共有することもできます｡
‫それは何にでも言えることで､ おもしろいと思います｡
‫コースの他のみんなも､ 私自身も｡
‫皆さんの出身国の電話番号や携帯電話番号の構成がどうなっているのか､
‫とても興味深いです｡
‫よし､ いいぞ｡
‫だから､ なんとかやってほしいですね｡
‫また､ そうでない方も､ 今説明したような構成にしたがっていただければと思います｡
‫では､ 先に､ まあ､ 実際に､ チェックしてみましょう｡
‫そのMr. というのも､ ここにはミスターとミスのどちらかがいるのです｡ パネッタか､ それともミスターがいるのか｡ ミューラー､ 間違いない｡
‫では､ DOTがあるかないかを確認するにはどうすればいいのでしょうか？
‫さて､ もうお分かりでしょう｡
‫その際､ クエスチョンマークを使用することができます｡
‫では､ まずミスターから｡
‫ご覧のように､ 3本または4本すべての線が少なくともマークされています｡
‫さん
‫そして､ ドットを使うと､ そのすべてが同様にアクティブであることがわかります｡
‫でもそれは､ ワイルドカードという意味でも､ 何の意味もないからです｡
‫だから､ ここも空きスペースかもしれない｡
‫そのため､ 文字通りのドットであることを確認したい場合は､ バックスラッシュを使用する必要があります｡
‫さて､ 次は空欄で､ その後に名前があります｡
‫だから､ AからZまであり得るんです｡
‫そんな感じで､ AからZまで何でもありです｡
‫さて､ どうすればMr. ミューラー氏とMr. ロバートソンも？
‫もう一度ドットを使いますが､ 今回はクエスチョンマークを使います｡
‫しかし､ バックスラッシュを使うこともできます｡ バックスラッシュsをもう一度確認すると､
‫あらゆる空白文字とマッチすると書いてあります｡
‫これで､ その名前がすべて正しくなったわけです｡
‫また､ 特定の文字数が続くようにしたい場合､ つまり名前は少なくとも4文字でなければならない場合､
‫ここでこの量詞を使うことができるのです｡
‫つまり､ Nを4とした量詞を使っているわけです｡
‫だから､ 最低でも4文字以上､ 4文字以上と言う｡
‫例えば､ AからZのような文字だけでなく､ 数字も入れたい場合は､
‫バックスラッシュWを使用します｡
‫つまり､ AからZ､ 0から9とアンダースコアです｡
‫だから､ 例えばプレイヤー名とかユーザー名とか､ そういうのに便利なんです｡
‫また､ 複数の文字が欲しいときは､ プラス記号を使えばいいんだ｡
‫つまり､ 量詞プラスは前の要素に1回以上マッチする｡
‫では､ 確認してみましょう｡
‫プラスを付けよう｡
‫そして､ 今お見せするように､ Mr. ドゥダ､ ミスター ミュラー､ Mr. ロバートソンとMr. G.
‫すべてフルハイライトになっているのは､ まあ､ 1文字以上欲しいということで､ 0回以上ということであれば､
‫星を使えばいいわけです｡
‫このように､ 回数や文字数が多いので､ ここでも星が効いています｡
‫さて､ 次はちょっとしたチャレンジの時間です｡
‫ウェブサイトのリンクを探す
‫それでは､ この構造を持つウェブサイトのリンクをすべて見つけてください｡
‫しかも､ チュートリアルである必要はないのです｡
‫EU 文字通りの名前ではなく､ 概ね構造になっているはずで､ 構造はご覧の通り､
‫httpsやHTTPのコロン､ スラッシュ､ スラッシュです｡
‫では､ w w w ドットかどうか｡
‫次に､ ドメインとトップレベルドメインの名前ですが､ この場合はEUです｡
‫だから､ もちろんドットで区切られている｡
‫わかりました｡
‫だから､ どうぞそれを試してみてください｡
‫わかりました｡
‫ぜひ試してみてください｡
‫そこで､ まずはhttp sxで､ SXはオプションで｡
‫だから､ クエスチョンマークを入力するだけなのです｡
‫だから､ このクエスチョンマークがそうであるように､ イエスかノーでなければならないのです｡
‫そして､ コロンフォワードスラッシュ､ フォワードスラッシュ､ そしてグループです｡
‫そこで､ オプションでW WW DOTグループを用意しました｡
‫そこで､ 再びクエスチョンマークを使い､ 名前をつけています｡
‫そして､ 今回はWプラスでワードグループを使いますが､ ここではもちろんバックスラッシュWでなければなりません｡
‫ドメイン名の後にドットが続きますが､ これは文字どおりのドットで､
‫次のグループの中で文字どおりのドットを使いましょう｡
‫だから､ 1文字でも複数文字でもいいし､ それだけでもいいんです｡
‫というのが､ 私たちの構造です｡
‫つまり､ こちらの1回と､ プラス1回以上､ これが2回あるわけです｡
‫つまり､ ハイレベル・ドメインとは､ この作品とその前のドットのことです｡
‫つまり､ バックスラッシュ・ドット､ つまりリテラル・ドットです｡
‫それから､ 単語そのもの､ あるいはまあ､ この場合はEUですが､ ドットコムかもしれないし､ ドットアカデミーかもしれない､
‫そういうものがあります｡
‫そして､ この作品であるこちらの名前そのものがあります｡
‫で､ その､ ドメイン名w w wの有無と､ httpかhttpsか｡
‫わかりました｡
‫だから､ もちろん自分で正規表現を作ることもできますが､ 時にはググってみるのも意味があります｡
‫そこで､ メールアドレスに対する表現を持たせるとします｡
‫だから､ もちろん､ その前にキャラクターを用意したい､ ということも可能です｡
‫つまり､ Wプラスと言い､ その後にまた広告記号をWプラスと言い､ その後に文字通りドットを付けると､ またcomのようなものができるわけです｡
‫だからまたバックスラッシュwプラス｡
‫だから､ それはとても一般的なものでしょうが､ かなりフェイクの可能性もありますね｡
‫そのため､ 人々は非常に複雑な正規表現を考え､ 実際にかなり安全だと考えています｡
‫では､ そのためにインターネットで調べてみよう｡
‫では､ インターネットに戻り､ 今度は「メールアドレス reg X」「reg X正規表現」でググってみると､ こんなサイトが見つかりますよ｡
‫email regexpと呼ばれるもので､ メールアドレス､ 99という正規表現が書いてあります｡ 99%の作品｡
‫そしてここには､ 公式規格である正規表現､ それからPython版､ JavaScript版､
‫HTMLなどが掲載されています｡
‫このように､ 今回はさまざまなプログラミング言語が登場します｡
‫それがCシャープ用なんですね｡
‫しかし､ ここにあるように､ ドットメール､ ドットメールアドレスクラスを満たしたシステムを利用する方法もあるのです｡
‫ですから､ この式を使うか､ 単にクラスを使うかのどちらかです｡
‫そして､ 私は通常､ メールアドレスが有効かどうかを判断するために､ このクラスを使用するのだと思います｡
‫メールアドレス､ ドットメールアドレス､ 文字列クラスのコンストラクタにメールアドレスを渡します｡
‫だから､ それも有効な手段だと思える｡
‫しかし､ 一般的にはそのような方法が考えられます｡
‫だから､ 正規表現が欲しい場合は､ 非常によく検索できる｡
‫しかし､ その1つを使用して､ 私のVisual Studioのファイルファインダーにコピーしても､ 実際にはうまくいきません｡
‫では､ 標準的なものを使ってみましょう｡
‫だから､ 一般的なメールの正規表現｡
‫このコードをコピーして､ Visual Studioに戻って､ 特定の正規表現を検索してみます｡
‫そして､ ご覧のように､ info at google dot comを使用すると､ test the test dot comは動作します｡
‫ご覧の通り､ 効果も抜群です｡
‫そのコードも同様に動作するようです､ など｡
‫そうそう､ そうなんです｡
‫それは正規表現です｡
‫そして､ もしあなたが､ まあ､ 自分でこれを解決しなければならないとしたら､ そうするだろうと思います｡
‫かなり時間が必要ですが､ そこがポイントでしょう？
‫すべてを自分で開発し､ 自分で考える必要はないのです｡
‫インターネットを使って物事を理解し､ Googleを使って検索しているものを見つけるだけで､ 人生の何時間も何時間も節約することができるのです｡
‫多くの場合､ うまくいく解決策が見つかりますし､ すべてを自分で作る必要はありません｡
‫わかりました｡
‫さて､ 今回の正規表現への短期集中講座はいかがだったでしょうか｡
‫そして､ 最後にもう一つ､ Cシャープで正規表現を使うことです｡
‫このビデオはかなり長いのですが､ これからCシャープを使って正規表現を使うので､ ちょっと待ってください｡
‫そこで､ 正規表現を使うために､ 先に正規表現を作っておきます｡
‫そしてこの場合､ ご覧の通り､ 正規表現を知りません｡
‫そこで､ 名前空間を追加する必要があります｡ これは､ システム・ドット､ テキスト・ドット､ 正規表現です｡
‫それが､ 私たちが欲しいものです｡
‫今度は正規表現を使うことができます｡
‫そして､ ここでパターンを入力することができます｡
‫このように､ 文字列パターンをここに入れるか､ 文字列パターンを作成して､
‫それをあなたのパターンとすることができるのです｡
‫では､ この場合､ 最初にADDを使う必要があるので､ バックスラッシュDを使って､ 自分のパターンの中のすべての数字を探すとしよう｡
‫そこで､ このregexクラスのコンストラクタに渡すことにします｡
‫そして､ ご覧のように､ この正規表現パターン､ つまり私の場合は数字だけを使用することになります｡
‫だから､ 「よし､ 全桁出せ」ということになるんです｡
‫では､ テスト用の文字列を作り､ それをtextと呼ぶことにします｡
‫マイナンバーは1､ 2､ 3､ 1､ 4｡
‫だから､ それが私のテストになるんです｡
‫そして､ このパターンが適合するすべての文字や時間を見つけるために､
‫for eachループを使用することにします｡
‫そこで､ そのためのマッチコレクションを使おう｡
‫マッチコレクションは､ 調べると､ 与えられたコンテキストでは有効でない型である｡
‫まあ､ それはいいんですけどね｡
‫マッチコレクションを作ろう
‫match collectionはreg x dot matchesとmatchesメソッドに等しいと言うことでいいのかな｡
‫どんなことができるのか？
‫私のテキストを入力すると､ それを私のパターンに当てはめようとするのです｡
‫そこで､ ここではこの正規表現を使っています｡
‫これがそのパターンです｡
‫正規表現に委ねました｡
‫つまり､ 今あるテキストとパターンをマッチングさせようとしているのです｡
‫そして､ テキストはここのこの行のコードです｡
‫そこで､ 今できることは､ さまざまなヒット商品を表示することです｡
‫そこで､ so many hits foundのようなことを言って､ そのために新しい行を使うつもりです｡
‫こんな風に言うんです｡
‫つまり､ これが私のヒット数であり､ これが私のマッチコレクションのドット数になるわけです｡
‫このように､ マッチコレクションオブジェクトにはcountというプロパティがあり､
‫何回検索を試みたか､ が表示されます｡
‫だから､ どんなパターンであれ､ どんなテキストであれ､ ここでもテキストと言うことにしています｡
‫そこで､ 本文の中で､ これだけのヒット数がありますよ､ と言って､ 今度は実際のヒット数を表示させるのです｡
‫そこで､ それぞれについて､ Match CollectionのHitと呼ばれるマッチを使用することにします｡
‫このfor eachループで､ ひたすらループしていくわけです｡
‫全一致コレクションまたはヘッドマッチコレクションで､ すべての異なるヒットを含んでいます｡
‫そして､ 文字列のどの位置でヒットしたかを確認するために､ ヒットした文字列をすべて画面に表示することにしています｡
‫では､ この文字列の中のどの位置なのか｡
‫例えば､ 8文字か7文字だとします｡
‫8､ 9､ 10
‫だから､ 2020年頃といえば､ そうなんです｡
‫この121は......この122は......あれか？
‫などなど｡
‫グループコレクションを使用すると､ 私のグループとなり､ ドットグループをヒットさせることができます｡
‫次にそれを表示させたい｡
‫では､ ご覧くださいw｡
‫ダブルタップ時間
‫そして､ よし､ ヒット作そのものを持ちたいと言うわけです｡
‫そこで､ 中括弧で見つけたETと位置を
‫では､ それを手に入れるにはどうすればいいのか？
‫まあ､ ここで作ったグループを使っているんですけどね｡
‫このグループ・コレクションは､ グループ・ドットまたは実際には角括弧でゼロの位置と言うことにしています｡
‫それを渡して､ その価値を教えてください｡
‫それから､ インデックスも欲しいですね｡
‫だから､ グループゼロとインデックス｡
‫よし､ では実行してみよう｡
‫そして､ その値とインデックスが表示されるのです｡
‫そして､ コントロールF5から始めると､ 開いたままで､ 23で1つ､ 24で3つ､ 25で1つ､
‫26で1つ､ 27で4つ見つかりましたと表示されるのです｡
‫このように､ 数字が見つかり､ その数字の位置がわかるようになっています｡
‫そして､ ポジションは､ ここにある文字列の中の位置です｡
‫わかりました｡
‫そこで､ もし違うパターンがあったとして､ 例えばこのように複数のDSがあるパターンなので､ 5桁の数字を用意したいと思います｡
‫では､ もう一度確認してみましょう｡
‫そして今､ 1桁の数字か1つの項目しか見つからず､ 「こんにちは」と表示されるはずです｡
‫番号は､ 1､ 2､ 3､ 4､ 3､ 1､ 5､ 4｡
‫そして､ ここ､ 1､ 2､ 3､ 1､ 4､ 23で発見｡
‫つまり､ ここで設定したものがすべて見つかり､ そこを検索すると､ インデックス3から始まるものが表示されます｡
‫だからスタートさせるし､ 私たちもそうです｡
‫こんにちは｡
‫マイナンバーは1､ 2､ 3､ 4､ こんにちは｡
‫3で見つかったのは､ この文字列の3番目の位置のインデックス3だからです｡
‫なるほど｡
‫というわけで､ RegExとC-sharpの使い方の一例です｡
‫まだまだありますよ｡
‫確認することができます｡
‫その辺はドキュメントで確認すればいいんだけどね｡
‫しかし､ このビデオは､ むしろ正規表現の一般的な考え方とその使用方法について説明しています｡