Rubyはテキスト処理も得意な言語です。強力な正規表現を使用できます。
Rubyでは、「/」と「/」で囲まれた文字列が正規表現として扱われます。
/¥d{3,}/
これは、3桁以上の数字を表します(123 や 4567 など)。
「¥d」のような正規表現を表す文字列のことを、「メタ文字」といいます。こちらのサイトでは、主要なメタ文字と、正規表現を使った基本的な処理の仕方を解説しています。
→むかぁ~どっとこむ Ruby入門5、正規表現まとめ~これからにRubyに乗り換えする人へ~
基本的な文字列置換方法として、「gsub」や「sub」メソッドがあります。
#『「a」で始まり、「a」が1回以上続き、最後が「a」以外の任意の一文字』となっている文字列を「ZZZ」に置換します。
aaa1 bbb2 aaa3.gsub(/a+./, "ZZZ")
↓
#「aaa1」と「aaa3」が「ZZZ」に置換されます。
ZZZ bbb2 ZZZ
aaa1 bbb2 aaa3.sub(/a+./, "ZZZ")
↓
#「aaa1」は「ZZZ」に置換されますが、「aaa3」はそのままです。
ZZZ bbb2 aaa3
subは、最初の1回だけ置換処理を行います。
gsubは、該当箇所すべてに対して置換処理を行います。
こちらのサイトでは、Rubyの文字列置換方法について、横断的に解説しています。一通り見ておくと、全体的なイメージを掴めます。「Regexpクラス」というのは正規表現を扱うクラスです。
→若手エンジニア/初心者のためのRuby 2.1入門(5):RubyのString/Regexpクラスによる強力な文字列操作/正規表現
"xxAA1yy xxAAAyy xxAA3yy"という文字列を
zzAA1zzのような形に変換したいとします。"xx"と"yy"を、"zz"に置換します。
xxAA1yy xxAAAyy xxAA3yy.gsub(/..(AA¥d)../){"zz" + $1 + "zz"}
↓
zzAA1zz zzAA3zz
検索対象は、「/..(AA¥d)../」なので、「任意の2文字+"AA"+数字1文字+任意の2文字」となります。「xxAA1yy」「xxAA3yy」が対象文字列となり、「xxAAAyy」は除外されます。
「/..(AA¥d)../」において、「AA¥d」を括弧で囲んでいます。括弧を使用すると、置換後の文字列とすることができます。
置換後文字列は、「{"zz" + $1 + "zz"}」の部分です。変数「$1」の部分に、「AA1」と「AA3」が入ることになります。
他にも記述法があるのですが、構文を間違えてしまうと正常に機能しません。こちらのサイトに解説があります。
2018年03月22日(木)17:00~18:30 AP品川 9階 にて「スマホアプリの開発プロセスについて~実は重要なサーバーサイドの開発と、Laravel(PHP) と Rails(Ruby)~」と題したセミナーを開催しました。 当日は、会場の様子をWebで中継し 遠隔地等ご来場出来ない方にもご参加頂きました。お陰様で、盛況のうちに終了することができました。ありがとうございました。 講...
OSS×Cloud ACCESS RANKING