Regex - заменить символы (запятую) между двойными кавычками, если шаблон соответствует - PullRequest
3 голосов
/ 06 декабря 2010

У меня есть этот журнал с сервера Exchange

2010-05-20T01: 53: 33.097Z, 12.10.53.144,, 12.10.53.200, EXHUB-10,08CCC3F50C35F2D2; 2010-05-20T01: 53: 32.128Z; 0, EXHUB-10 \ Default EXHUB-10, SMTP, ПРИЕМ, 829888,, Norma @ ccc.gov.my ,, 521647,1 ,,, "НЕАК Заседание рабочей подгруппы - Обновление Навыки рабочей силы и Улучшение профессионального и технического Тренинг - 14:30, понедельник, 24 мая, 2010" , lee.cheesung @ gmail.com, <>, 00A:

и я использовал это регулярное выражение для сопоставления и группировки шаблона;

(\ d {4} - \ d {2} - \ d {2}) (?: [\ Ш \ с] +) (. \ D +: \ D +: \ D + \ D +) (: [ \ W + \ д.] *), (. *?), (. *?), (. *?), (. *?), (. *?), (. *?), (. *?) ,,,,, ([ '"] *. ['"]. | *?) (*.?) (*.?) (*.?) (*.?), ((*.?). ?.?.?.?.?.? *), (*), (*), (*), (*), (*), (: (\ d {4} - \ d {2} - \ д {2} \ ш \ д {2}: \ д {2}: \ д {2} \ d +) (:.?. \ W +) *) * (*)

Обычно информация в журнале разделяется запятой. К сожалению, для поля «тема письма», если пользователь вводит запятую, журнал будет отображаться в двойных кавычках, как в примере выше - запятая в формате даты "Monday May 24, 2010"

..... 521647,1 ,,, "Подкомпонент NEAC Совещание группы - Навыки повышения квалификации Рабочая сила и совершенствование профессионального и техническая подготовка - 2:30 вечера понедельника 24 мая 2010" , lee.keesung @ gmail.com, .....

Как я могу взять всю тему вместе с запятой без двойной кавычки в конкретной группе (19-я группа)

Ответы [ 3 ]

5 голосов
/ 06 декабря 2010

Вы упоминаете:

В основном информация в журнале отделяется запятой ... также, если запятая является частью поля, поле будет заключено в двойные кавычки.

, что делает его CSV файлом. Разбор файла CSV - решенная проблема, и вам не нужно изобретать велосипед. Используйте анализатор CSV, предоставляемый вашей языковой библиотекой.

Если вы используете Perl, взгляните на модуль Text :: CSV .

2 голосов
/ 06 декабря 2010

Строка, которую вы дали, кажется, в формате CSV.Почему бы не проанализировать его с помощью синтаксического анализатора CSV, например:

0 голосов
/ 07 декабря 2010

Для Java используйте Apache Commons:

http://commons.apache.org/sandbox/csv/

...