From: "dunric (David Unric)" Date: 2013-05-15T00:27:11+09:00 Subject: [ruby-core:54986] [ruby-trunk - Bug #8405][Open] CSV module - improper regexp for escaping special characters Issue #8405 has been reported by dunric (David Unric). ---------------------------------------- Bug #8405: CSV module - improper regexp for escaping special characters https://bugs.ruby-lang.org/issues/8405 Author: dunric (David Unric) Status: Open Priority: Normal Assignee: Category: lib Target version: ruby -v: 2.0.0p0 Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN =begin There seems to be bug in csv.rb module. If you would like to use some special characters like ((*|*)) as a quote_char (passed as a parameter to CSV methods like read), program terminates with ((*CSV::MalformedCSVError: Missing or stray quote in line xxx*)) error message even if the input .csv file is correct. Bellow is the assignment of the Regexp used for escaping special symbols used in regular expressions: (({1587: @re_chars = /#{%"[-][\\.^$?*+{}()|# \r\n\t\f\v]".encode(@encoding)}/})) The issue is with the leading ((*[-]*)) which I find completely wrong and causes miss of all matches it was intended to. The hyphen char "-" has to be escaped only inside brackets ((*[]*)) and only if it does not immediately follow the left bracket. The quick fix for the above issue may look like (({1587: @re_chars = /#{%"(?