はじめに
今回は,
正規表現とは
さて,
- ※1)
- A logical calculus of the ideas immanent in nervous activity
- ※2)
- Representation of Events in Nerve Nets and Finite Automata
- ※3)
- qedの正規表現にマッチした行を表示するコマンド,
g/ regular expression/ p = Global Regular Expression Printがgrepコマンドの由来 - ※4)
- 詳説 正規表現 第三版 P.
83
http://msdn. microsoft. com/ ja-jp/ library/ cc427944. aspx
基本的な演算
正規表現では,
- 量化:
- 語を繰り返す。一般に用いられる演算子*から,
スター演算とも言う。結合則は強い。 - 連接:
- 語と語をつなぐ。
- 選言:
- ある語か別の語かのどちらか。結合則は弱い。
- ※5)
- 正規表現の正確な定義は形式言語理論における正規表現など
演算子
Rubyでは,
具体的には後述しますが,
基本的な正規表現
簡単な物から見ていきましょう。まず,
しかし,
数値をカンマで区切る
大きな数値を表記する際は,
str = "1000000"
ary = []
n = 0; new = []
str.split(//).reverse.each do |x|
new.push(x)
new.push(',') if (n += 1) % 3 == 0
end
p new.reverse.join #=> "1,000,000"
しかし,
str = "1000000"
1 while str.gsub!(/([0-9])((?:[0-9]{3})+)¥z/, '¥1,¥2')
p str #=> "1,000,000"
先読み
さて,
p "1000000".gsub(/([0-9])(?=(?:[0-9]{3})+¥z)/, '¥1,')
#=> "1,000,000"