#!ruby # -*- mode: ruby; coding: utf-8 -*- # Last updated: <2016/10/23 10:11:17 +0900> # # UTF-16LE + BOM の文字列に対して正規表現を使う infile = "text_utf16le_bom.txt" # ソースコードの文字コード(この場合、UTF-8)とは # 異なる文字コードの文字列(この場合、UTF-16LE)に対して # 正規表現を使いたい場合、Regexp.new() を使う。 # いつもの調子で l =~ /^(.+)/ と書いてしまうと # UTF-16LE と UTF-8 を混在させてしまうので怒られる re0 = Regexp.new( '^\/\/'.to_s.encode("UTF-16LE") ) re1 = Regexp.new( '^(.+)\t(.+)$'.to_s.encode("UTF-16LE") ) f = File.open(infile, 'rb:BOM|UTF-16LE') while l = f.gets if l =~ re0 puts "comment" elsif l =~ re1 puts "data" end end f.close # ファイルを開いて用が済んだらフツーは閉じる