「Ruby」参考情報 第1回 Rubyの正規表現による文字列置換と変数の利用として、「(1)Rubyの正規表現」「(2)正規表現による文字列置換」「(3)文字列置換と変数の利用」について紹介。

「Ruby」参考情報 第1回 Rubyの正規表現による文字列置換と変数の利用

「Ruby」参考情報 第1回 Rubyの正規表現による文字列置換と変数の利用として、「(1)Rubyの正規表現」「(2)正規表現による文字列置換」「(3)文字列置換と変数の利用」について紹介。

■関連する比較ページ

(1)Rubyの正規表現

Rubyはテキスト処理も得意な言語です。強力な正規表現を使用できます。

■Rubyでの正規表現の表現方法

Rubyでは、「/」と「/」で囲まれた文字列が正規表現として扱われます。
/¥d{3,}/
これは、3桁以上の数字を表します(123 や 4567 など)。

■メタ文字リファレンス

「¥d」のような正規表現を表す文字列のことを、「メタ文字」といいます。こちらのサイトでは、主要なメタ文字と、正規表現を使った基本的な処理の仕方を解説しています。

→むかぁ~どっとこむ Ruby入門5、正規表現まとめ~これからにRubyに乗り換えする人へ~

(2)正規表現による文字列置換

基本的な文字列置換方法として、「gsub」や「sub」メソッドがあります。

■gsubによる置換例

#『「a」で始まり、「a」が1回以上続き、最後が「a」以外の任意の一文字』となっている文字列を「ZZZ」に置換します。
aaa1 bbb2 aaa3.gsub(/a+./, "ZZZ")
 ↓
#「aaa1」と「aaa3」が「ZZZ」に置換されます。
ZZZ bbb2 ZZZ

■gsub と sub の違い

aaa1 bbb2 aaa3.sub(/a+./, "ZZZ")

#「aaa1」は「ZZZ」に置換されますが、「aaa3」はそのままです。
ZZZ bbb2 aaa3

subは、最初の1回だけ置換処理を行います。

gsubは、該当箇所すべてに対して置換処理を行います。

■参考サイト

こちらのサイトでは、Rubyの文字列置換方法について、横断的に解説しています。一通り見ておくと、全体的なイメージを掴めます。「Regexpクラス」というのは正規表現を扱うクラスです。

→若手エンジニア/初心者のためのRuby 2.1入門(5):RubyのString/Regexpクラスによる強力な文字列操作/正規表現

(3)文字列置換と変数の利用

■対象文字列を変数として置換文字として使用する

"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」が入ることになります。

■記述構文に注意

他にも記述法があるのですが、構文を間違えてしまうと正常に機能しません。こちらのサイトに解説があります。

→勉強日記 subやgsubで括弧とマッチした部分の再利用、および式展開の方法

Ruby最新TOPICS

【講演資料を公開】3/22「スマホアプリの開発プロセスについて~実は重要なサーバーサイドの開発と、Laravel(PHP) と Rails(Ruby)~」(2018年04月27日 10:04)

2018年03月22日(木)17:00~18:30 AP品川 9階 にて「スマホアプリの開発プロセスについて~実は重要なサーバーサイドの開発と、Laravel(PHP) と Rails(Ruby)~」と題したセミナーを開催しました。 当日は、会場の様子をWebで中継し 遠隔地等ご来場出来ない方にもご参加頂きました。お陰様で、盛況のうちに終了することができました。ありがとうございました。 講...

  • Zabbixカンファレンス2019
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter