2016-03-23 2 views
-2

У меня есть разделенный запятыми массив журналов смешанных полей, из которых я бы хотел вынуть 9-е поле («-»), возможно, избегая двойных кавычек (так только - тогда):RegEx nth unkown type field

Home_TE,-2.8,1,"-",-,-,-,1,"-",-,-,-,"-",1,-,"-","-",-,-,MIL_TT 

У кого-нибудь есть чистое регулярное выражение для этого?

+0

Какой двигатель регулярного выражения? Что вы пробовали до сих пор и какие проблемы вы столкнулись? Должны ли мы учитывать возможность того, что (первые девять) цитируемых значений поля могут содержать запятые и/или экранированные символы кавычек? –

+0

Pure RegEx. 9-й будет, скорее всего, числом, а предыдущие будут либо строкой, либо числом, но не уверены, что, например, ожидается строка в 4-м или 5-м поле. Поскольку запись в журнале я не считаю, что запятая будет частью ожидаемого значения. – MimmoFu

+0

Вот что я пробовал ([^,] *,) {9}, но для которого я могу получить "-", – MimmoFu

ответ

0

В своей простейшей форме:

^(?:(?:[^,]*,){8})"?([^,"]*) 

подмаска, ([^,"]*), захватывает девятое поле, зачищенный от двойных кавычках.

При попытке согласования нескольких строк за один раз вам нужны модификаторы m (многострочные) и g (глобальные).

Ошибка, если запятые встроены в любое из первых 9 полей.

Демонстрация: https://regex101.com/r/gM8mO5/1