[Ruby] Ruby で半角スペースと全角スペースをマッチさせる正規表現いろいろ
memo.
スペースを hoge に置換します。
[1] pry(main)> str = "山田 太郎,山田 太郎,山田 太郎"
=> "山田 太郎,山田 太郎,山田 太郎"
[2] pry(main)> str.gsub(/\s/, 'hoge')
=> "山田 太郎,山田hoge太郎,山田 太郎"
全角スペース \u3000
が混じっていました。
[3] pry(main)> str.gsub(/ /, 'hoge')
=> "山田hoge太郎,山田 太郎,山田hoge太郎"
なので「半角スペース or 全角スペース」として \s|
を指定します。
[4] pry(main)> str.gsub(/\s| /, 'hoge')
=> "山田hoge太郎,山田hoge太郎,山田hoge太郎"
リファレンス
Unicode プロパティによる文字クラス指定。
\p{blank}
[5] pry(main)> str.gsub(/\p{blank}/, 'hoge')
=> "山田hoge太郎,山田hoge太郎,山田hoge太郎"
[6] pry(main)> /\p{blank}/.match("\u3000")
=> #<matchData " ">
POSIX 文字クラス指定。
[[:blank:]]
[7] pry(main)> str.gsub(/[[:blank:]]/, 'hoge')
=> "山田hoge太郎,山田hoge太郎,山田hoge太郎"
[8] pry(main)> /[[:blank:]]/.match("\u3000")
=> #<matchData " ">