回答編集履歴
1
追記
test
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
正しいCSV形式か、不正なCSV形式かの判断だけであれば正規表現で出来ますが、
|
2
2
|
不正の原因である`"`の特定や削除はプログラムのロジックでないと無理だと思います。CSVのパーサーを書くみたいな。
|
3
3
|
|
4
|
+
# 追記
|
5
|
+
「前に奇数個の`"`があり、後ろに`"` `,` 末尾 が続かない`"`」という条件だと出来ますね。
|
6
|
+
```Ruby
|
7
|
+
data = [
|
8
|
+
'123, "abc", "123abc"',
|
9
|
+
'456, "def", "456"def", "aaaa"xxxx"',
|
10
|
+
'789, "ghi", "aaa,""xxxx", "789,ghi"'
|
11
|
+
]
|
4
12
|
|
13
|
+
data.each do |s|
|
14
|
+
p s.gsub(/^[^"]*"[^"]*(?:"[^"]*"[^"]*)*?\K"(?!\s*(?:[",]|$))/,"")
|
15
|
+
end
|
16
|
+
```
|
17
|
+
この条件だけで目的にかなうのかは不明。
|
18
|
+
1行に複数個の不正`"`があっても1つ目しか置換されないので、置換が発生した場合は再度実行する必要があります。
|
19
|
+
|