in reply to Remove tabs only between quotation marks
$inputstring=qq{field1\tfield2\t"field3\t\t"\tfield4\t"field5\t\t"\n};
you would not want to strip the tabs surrounding field4 even though it is surrounded by quotation marks. A regular expression like s/^([^"]*"[^\t"]*)\t+/$1/ would strip the tabs from the first quoted field, but not from all fields. You could wrap that in a while loop and swap the first character class to allow for paired quotes
while (s/^((?:[^"]|"[^"]*")*"[^\t"]*)\t+/$1/){1}
but CSV also includes an escape character, and any escaped quotation marks would then break the above. So why fight with all that when there is a well-tested solution at your fingertips?
|
|---|