Позвольте мне предисловие к этому, сказав, что я полный любитель, когда дело доходит до RegEx и только началось несколько дней назад. Я пытаюсь решить проблему форматирования файла и попал в зацепку с определенным типом данных. Входной файл структурирован следующим образом:Regex Partial String CSV Matching
Two words,Word,Word,Word,"Number, number"
Что мне нужно сделать, это отформатировать его, как это ...
"Two words","Word",Word","Word","Number, number"
Я имел RegEx образец
s/,/","/g
рабочий , за исключением того, что он также заменяет запятую в уже цитированном номере Number, number, который вызывает разделение поля и разбивает файл. По сути, мне нужно изменить свой шаблон, чтобы заменить запятую на «,» [цитату запятой цитаты], но только тогда, когда за этой запятой не следует пробел. Обратите внимание, что другие поля никогда не будут иметь пробела после запятой, а только список номеров с разделителями.
мне удалось подправить
s/,[A-Za-z0-9]/","/g
, которые, подбирая соответствующие строки, будет заменить запятой и следующее письмо. Я слышал об обратных ссылках и думаю, что это может быть то, что мне нужно использовать? Насколько я понимаю,
s/(,)[A-Za-z0-9]\b
должен работать, но это не так.
У кого-нибудь есть идея?
Я бы хотел сделать это через парсер CSV, но мне дают эти файлы так, как они есть, без моего участия в каком-либо утверждении в реальном формате. Поэтому я застрял в регге. –
s /, (?!)/","/ Работал отлично, спасибо. Я использую Perl, поэтому я могу запустить скрипт против файлов, когда их отправят. Сохраняет его в Parser и работает с ним там. Кроме того, я хотел изучить Perl и RegEx так или иначе, чтобы две птицы с одним камнем. Спасибо за вашу помощь :). –