У меня есть данные, поступающие в текстовый файл, разделенный по каналам. К сожалению, 2 поля могут иметь несколько значений. Чтобы разделить эти кратные числа, отправитель снова использовал каналы, но заключил в них кавычки. Мое регулярное выражение работало в течение нескольких месяцев до определенной редкой ситуации ...
Регулярное выражение в настоящее время:
([^\|]*)\|"?([^"]*)"?\|([^\|]*)\|"?([^"]*)"?
И это сработало для следующей ситуации, которая происходит большую часть времени:
а | "part1 | part2" | а | "tool1 | tool2"
Но в этом случае ([^"]*)
прыгает вперед и переносит все с пробела в конец кавычек:
а || а | "tool1 | tool2"
Так что я понимаю, что должен учитывать, когда рядом идет труба, а не цитата.
Просто не уверен, как .............
Постскриптум Для тех PIG-людей, которые могут на это смотреть, я убирал обратную косую черту из каждого escape, чтобы она выглядела больше как Java, но в PIG вам нужно 2, fyi.