【A-Z】正規表現でアルファベットか数値を検索する方法【0-9】
正規表現のお勉強第二回目は、アルファベットを探し出すコマンドを覚えましょう。
前回は指定の文字を含む1行を検索する方法を学びましたので、 復習も兼ねて特定の「アルファベットが含まれる場合」という方法を学びます。
ついでに「数字が含まれる場合」も同時に学んで見ましょう。
それでは前回あまり使わなかったURLリストを使っていくので もう一度貼っておきます。
- ttps://A123BCDE.com
- ttps://BC456DEF.net
- ttps://CDF789GH.info
- ttps://DFGH095I.org
- ttps://ACEGI753.xyz
- ttps://1BD2FHJ3.shop
アルファベットA-Zだけを検知する
AからZまでのアルファベットだけを検索したい場合は、「[A-Z]」
と、ブラケットでA-Zを囲んでやると問答無用ですべてのアルファベットを検知します。
プログラミングの場合、これを使うとアルファベットが含まれている場合 という条件分岐ができるので意外と便利です。
アルファベット以外の文字を除外したい場合に効果を発揮しますね。
前回紹介した「.*?」と組み合わせて使うと「.*?[A-Z]」 とすると最初にアルファベットのある所まで検知することができます。
大文字と小文字判定をする場合
「[A-Z]」は大文字小文字問わずアルファベットであれば判定してしまいます。
大文字小文字を分けたい場合、テキストエディタは検索のところの 大文字小文字判定を切り替える項目があると思うのでそれを使って分けましょう。
プログラミング言語のときは「[A-Z]」と「[a-z]」で大文字小文字判定ができます。
判定させたくない場合は、文字列をスラッシュで囲んでケツの方のスラッシュのあとに 「i」をつけると大文字小文字の判定をしなくなります。
プログラミングで正規表現を使う場合はスラッシュで文字列を囲んでやることが多く いろんな書き方があるので、また別の記事でそのことについて触れます。
数字の場合もアルファベットと同じ
数字の場合も殆ど同じなので簡単に説明すると、「[0-9]」とすると数字を検知してくれます。
数字は大文字小文字がないのでそのへんは気にする必要はないですね。
アルファベットや数字を途中まで探したい場合
ここまで紹介したものはAからZ、0から9まですべて検知してしまいます。
なのでABCだけを検知したい場合は「[A-C]」という風にどこからどこまで検知したいかを書く必要があります。
数字も同じで「[1-5]」とすると1・2・3・4・5だけ検知してくれます。
お察しの通りこのやり方は基本的に続いているワードしか検知出来ません。
なのでAとCとEだけをサーチしたい場合はちょっと複雑なコマンドを組む必要があります。
実践編「アルファベットから始まるURLを見つける」
それではここまで身につけた正規表現を使ってアルファベットから始まるURLだけをサーチしてみましょう。
URLは基本的に://~から始まるので直接記述しても大丈夫です。
で、最後のスラッシュの後にアルファベットがくるURLを探したい場合だと
「http?://[A-Z].+$」
という風にすればhttpとhttpsのアルファベットで始まるURLを検知できます。
リストは全部ttpsになっているのでsを消したりして検知するかどうかためてみてください。
正規表現のキモは組み合わせることにある
正規表現の組み方に正解はありません。
もちろん最適解というのは存在しますが、基本的に望んだ検知ができればOKです。
ただ、プログラムを組む時にもしかしたらその正規表現の組み方で予想外のワードを検知してしまう場合があるので 考えられるワードでテストして問題ないか確認するところまで正規表現を組むということになります。
なのでテストというものが大事になってくるわけですね。
記号は逆スラッシュ(バックスラッシュor¥マーク)でエスケープする
最後に正規表現のコマンドが含まれる文字列だった場合、 普通に使うと正規表現として認識されてしまうので、除外したい場合は 除外したい文字の前に「¥」を半角で置いてあげる必要があります。
パソコンの環境によっては円マークで表示されたりスラッシュの逆である バックスラッシュで表現されることがあります。
Windowsの日本語環境だとエディタだとバックスラッシュだったり、 ブラウザだと半角の円マークになったりしますが基本的には正規表現では同じ意味になリます。
円マークorバックスラッシュは「エスケープ記号」という名前になります。
例えば「+」という文字が含まれる文字列を正規表現を組み合わせて検知したい場合
「+」と+の前に付けてあげるとエスケープさせるという意味合いになって +は正規表現コマンドではなくて文字として認識しろとコンピュータに伝えることが出来ます。
この辺はもはや慣れですね。
ここまでで覚えたことでだいたいの検知ができる
私が最初に覚えた正規表現はここまでになります。
ここまでで覚えたことだけでもかなり文字列の検索に強くなりました。
ですが正規表現をマスターしたとは到底言えないレベルです。
正規表現はプロのエンジニアでもなかなかマスターできるものではありません。
実際実務で使う正規表現のコマンドで使うものは結構限られてきます。
すべてをギリギリまで使っているプログラムなんてそうそうないんじゃないでしょうか。
なのでこの初歩の初歩さえ覚えてしまえば後はコマンド1つ1つの意味を知っていけば 自然と成長していくと思います。
この文字列で検索したいんだけどどうすればいいんだろうか?
って壁にぶち当たることが必ず出てきます。
その際に基礎を思い出してあとは検索して使えそうなコマンドを組み合わせてみて 理想の正規表現コマンドを作り出してみましょう。