Ruby => 正規表現検索、置換①

# 文字列
string = 'cccbbbaaaddd'


# 正規表現
pattern = 'a.*'


# 検索
string.match(pattern)                # => #<MatchData "aaaddd">
string.match(pattern).to_s           # => "aaaddd"
string.match(pattern).to_s[-1]       # => "d"
string.match(pattern).to_s[0]        # => "a"

string.match(pattern).pre_match      # => "cccbbb"
string.match(pattern).pre_match[0]   # => "c"
string.match(pattern).pre_match[-1]  # => "b"

string.match(pattern).post_match     # => ""
string.match(pattern).post_match[0]  # => "nil"
string.match(pattern).post_match[-1] # => "nil"

"aaaarrrrssssbbbbcccc".match("[a-z && [^ab]]+").to_s      # => "rrrrssss"

"hello world".match(/(\w)\1/)                     # => #<MatchData "ll" 1:"l">

# 上と同じ ?<name> で名前つけて、k<name>で取り出す
"hello world".match(/?<name>(\w)\k<name>/)        # => #<MatchData "ll" 1:"l">

"pipipiworld".match(/(\w+)\1\1/)                  # => #<MatchData "pipipi" 1:"pi">


# 置換
string.gsub(/#{pattern}/) {"222"}                # => "cccbbb222"

"aaaarrrrssssbbbbcccc".gsub(/[a-z && [^ab]]+/) {"AAAA"}  # => "aaaaAAAAbbbbAAAA"

"hello world".gsub(/(\w)\1/) {"AAAA"}                    # => "heAAAAo world"

"pipipiworld".gsub(/(\w+)\1\1/) {"super mario "}         # => "super mario world"