• WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCampPro_インタビュー
    未経験から上京し、テレビでも話題のIT企業に転職!【WebCampPro卒業生インタビュー】
    2018.03.10

▼当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

金王冠Web Camp【業界最安値】1ヶ月集中してプログラミングスキルを身につけられるスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
銅王冠Tech Camp業界最大級!教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
びっくりマークWebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。
7月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
6月受入枠は満員となっております。7月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!
※プログラミングを学んでみたいけど、時間がなくて全文の記事が読めない!という方は、WebCampの無料説明会(毎日開催)に参加してみてください!

 

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...

">

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...

プログラムというのは、入力されたある情報を処理して、結果を出力することを繰り返すことで成り立っていると言えます。

その情報には数値や画像、信号などいろいろとありますが、文字列を扱うことは少なくありません。

正規表現を使うことで、その文字列をシンプルかつスマートに扱うことができるのです。

文字列を探すということ

文字列を扱う上で、最初にすることは、文字列を探すことです。

「探していない」と思う人もいるかもしれませんが、それは人が文字列を見て一瞬でそれを理解できるからで、コンピュータにはそんな芸当はできません。

コンピュータが文字列を扱うとき、まず、その文字列が正しいかどうか、必要な文字列かどうかの確認をする(知っている文字列と一致するかどうか検索する)必要があるのです。

探す=一致しているかどうか

文字列を探すための基本は、一致しているかどうかです。

例えば、「みかん」という単語を数えるプログラムがあったとしましょう。

そのプログラムは、いくつも入力される単語の中から「みかん」に一致する場合、数を+1するといった作りになるでしょう。

具体的には、次のようなプログラムになります。

# 入力データ
datas = ["りんご","みかん","もも","かき","すいか","みかん","なす"]

# みかんの数
count = 0

# 入力データから1つずつデータを確認して、みかんが見つかれば数を+1する
for data in datas
  if data == "みかん" then  # ①
    count += 1
  end
end

# 結果表示
print("みかんの数 = ", count)

いろいろと複雑に見えるかもしれませんが、ここで注目するところは、①の「data == "みかん"」の部分だけです。

dataは、入力データdatasから取り出したデータが1つ入っている変数ですが、そのdataと"みかん"が等しい(==)場合に、countを+1しています。

つまり、一致しているかどうかで、探しているというわけです。

ちなみに、このプログラムの実行結果は、次のようになります。

みかんの数 = 2

探す=パターンがあるかどうか

ではもし、入力データが次のような場合はどうでしょうか?

datas = ["こうぎょくりんご","うんしゅうみかん","はくとうもも","たねなしかき","でんすけすいか","みっかびみかん","ただのなす"]

入力データには、ただ"みかん"と書いてあるのではなく、"うんしゅうみかん"と、ブランド名込みの名称になっています。

もちろん、みかんの数は2つに変更はありません。しかし、それは人が見ているから分かるだけです。コンピュータにとっては、どうなるでしょうか?

先ほどのdatasの部分を上記のデータに変更して動かしてみれば、一目瞭然です。

みかんの数 = 0

残念ながら、さきほどのプログラムは、"みかん"と完全に一致するデータ(完全一致)しか数えられません。そのため、同じみかんでも"うんしゅうみかん"や"みっかびみかん"は一部しか一致(部分一致)しませんので、違うものと認識されたわけです。

こんなときにこそ、正規表現が効果を発揮します。

まずは、プログラムを修正して確認してみましょう。修正する部分は、先ほど注目した①の「data == "みかん"」の部分だけです。

①の「data == "みかん"」の部分を、以下のように修正します。

data =~ /みかん/

細かな説明は後にしますが、この変更によって、"みかん"と完全に一致するデータの確認から、"みかん"という文字の並びのパターン(正規表現)を含むデータかどうかの確認に変わったわけです。
※ちなみに、「含まれない」ことを表す式は「!~」です。

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
2017-10-04 10:26
今回の記事では、未経験からWebCampを1ヶ月受講し、その後エンジニアとして転職をした喜田さんにお話を伺いました。 <プロフィール> 喜田 大介 さん (28歳) 大学時代はプ...

Rubyでの正規表現の使い方

前述の通り、正規表現を使うことで、コンピュータにより柔軟な処理をさせることができるのです。

上の例では、「"みかん"という文字の並び」といった単純なものでしたが、正規表現の実力はそんなものではありません。

その力を発揮させるために、まずはRubyでの正規表現の使い方を説明しましょう。

「//」を使う

先ほど紹介した、もっともポピュラーな方法です。

確認すべきパターンを//で囲むことによって、それが正規表現だと認識してくれます。

"みかん" …… 文字列
/みかん/ …… 正規表現

Regexp.new()を使う

Regexp.new()というメソッドに文字列を渡すことで、その文字列が正規表現だと認識してくれます。

Regexp.new("みかん") …… 正規表現

%rを使う

基本的には上2つ(主に1つめ)を使いますが、まれに必要になるのが、この方法です。

例えば、あるサイトの特定のページのURLを含んだ文字列を探そうとしている場合、以下のようにしてしまうことがあります。

url =~ /test.com/item/001/
[\ruby]

しかし、これでは//で囲んでいるのか、URLの途中なのか、区別がつきません。

このように、正規表現として「/」を含んだものを使いたい場合には、次のように記載すると、うまくいきます。


url =~ %r(/test.com/item/001/)
[/ruby

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】

正規表現のパターン・機能早見表

ここまでで、正規表現について説明してきました。

ここでは、正規表現(パターン)を表現するための「メタ文字」と「オプションフラグ」を一覧で紹介します。

メタ文字

メタ文字というのは、「文字そのもの」や「文字が0以上ある」、「一定の種類の文字」といったパターンを表現するための文字で、正規表現の要となるものです。

すべてをいっぺんに憶えることは難しいと思いますので、都度、ここに記載した表を確認して使って憶えていきましょう。

正規表現 意味
^ 行頭 /^abc/ → abcで始まる行
$ 行末 /abc$/ → abcで終わる行
. 改行を除く任意の1文字 /a.b/ → aとbの間に任意の文字1文字が挟まっている
[...] []内のいずれか1文字 /[A-Za-z]/ → 英字
[^...] [ ]内に含まれない1文字 /[^0-9]/ → 数字以外(数字の場合は/[0-9]/)
* 0回以上の繰り返し /a.*/ → aの1回以上の繰り返し
+ 1回以上の繰り返し /a+/ → aの1回以上の繰り返し
{m} m回の繰り返し /[0-9]{3}/ → 000から999の数字
{n,} n回以上の繰り返し /S{3}/ → 3個以上繰り返されているS(SSS、SSSS、SSSSS...)
{m,n} m回以上n回以下の繰り返し /S{2,3}/ → 2個か3個繰り返されているS(SS、SSS)
? 0回または1回 /aa?/ → aまたはaa
a|b aまたはb /ABC|abc/ → ABCまたはabcの行
(...) グループ化 /(ABC)+/ → ABCの1回以上の繰り返し
\w 英数字と_ /^\w+$/ → 英数字のみの行
\W 英数字と_以外 /Hello,\WWorld/ → Hello,とWorldの間に英数字以外の文字列
\s 空白文字 /Hello,\sWorld/ → Hello,とWorldの間に空白1文字
\S 空白文字以外 /Hello\SWorld/ → HelloとWorldの間に空白以外の文字
\d 数字 /a\d/ → aと数字1文字
\D 数字以外 /a\D/ → aと数字以外の1文字
\ メタ文字を文字にする /\./ → 「改行を除く任意の1文字」ではなく「.」

オプションフラグ

文字コードの問題など、メタ文字だけでは対応しきれない場合に使用するのが、これらのオプションです。

使用頻度は高くありませんが、「いざ」というときに思い出せるよう、「そういったものもある」程度には知っておきましょう。

フラグ 説明
i 大文字・小文字を区別しない /ab/i → ab,Ab,aB,AB
g 文字列内を最後まで、2番め、3番め以上のものもすべて検索する /ab/g → abが見つかったすべての場所を知ることができる
m 文字列内に改行があっても最後まで検索する 対象文字列"abc\nefg\nhij" /efg/m → マッチする

まとめ

正規表現については、紹介しました。

じつは、正規表現は、それだけで本が1冊書けるほど奥の深いものです。そのため、ここで紹介したのはほんの一部だと思って良いでしょう。しかし、基本は押さえていますので、これからRubyの学習を進めていく上で困らない程度の内容にはなっていると思います。

今後も、早見表を見直していただければ幸いです。

・コンピュータは柔軟に考えて文字列を探せないので、パターンを教えてあげる必要がある
・正規表現は文字列のパターンのこと
・//で囲まれた文字列が正規表現だと解釈される
・Regexp.new("文字列")で、"文字列"は正規表現と解釈される
・「=~」もしくは「!~」という式を使って、正規表現で表された文字列が対象の文字列にあるかどうかを確認できる
・正規表現はメタ文字で表現する

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

7月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
6月受入枠は満員となっております。7月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

 

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...
関連キーワード
Rubyの関連記事
  • 【Ruby 入門者説明書!】ifを使いこなすポイントはここ!解説
  • 【Ruby入門説明書】ruby caseについて解説
  • 【Ruby入門説明書】オブジェクトの理解について解説
  • 【Ruby入門説明書】変数と定数について解説
  • 【Ruby入門説明書】数値と四則計算について解説
  • 【Ruby入門説明書】日本語と文字列、コードについて解説

当サイトで人気のオススメ転職サービスTOP3

1位 マイナビエージェント×IT

おすすめポイント

・平日忙しい人も、土曜日開催の個別キャリア相談会に参加できる

・職種や仕事内容(要件定義、上流工程から携わる仕事など)の要望が細かくできる
・マイナビの規模を活かした豊富で幅広い求人数

マイナビエージェント×ITの登録はこちら

2位 レバテックキャリア

おすすめポイント

・求人登録数4,000件以上

・エンジニア未経験、経験者両方に対応

・有名企業の採用担当者インタビューがみれる

・一次面接NGからの内定実績もあるほど、内定率が高い

レバテックキャリアの登録はこちら

 3位 type転職エージェント

おすすめポイント

転職者の71%が年収アップ

・IT系企業、特にエンジニアに限らず営業職の求人も充実している

各職種専門の転職アドバイザーが援助

type転職エージェントの登録はこちら