Я не смотрел кабели, но давайте рассмотрим аналогичную проблему и рассмотрим варианты: допустим, вы хотели написать парсер для RFC, есть RFC для форматирования RFC, но не все RFC следуют этому.
Если вы написали строгий анализатор, вы столкнетесь с ситуацией, с которой столкнулись - выбросы остановят ваш прогресс - в этом случае у вас есть два варианта:
Разделите их на две группы: строго отформатированные и нет.Напишите свой строгий синтаксический анализатор так, чтобы он получал низко висящие фрукты, и на основе числовых выбросов определите, какие из них лучше всего подходят (ручная обработка, анализатор выбросов и т. Д.)одинакового размера, или есть больше выбросов, чем стандартные форматы - напишите гибкий анализатор.В этом случае регулярные выражения будут более полезны для вас, так как вы можете обработать весь файл в поисках ряда гибких регулярных выражений. Если одно из регулярных выражений завершится неудачно, вы можете легко сгенерировать список выбросов.Но, поскольку вы можете выполнять поиск по ряду регулярных выражений, вы можете построить матрицу неудачных / неудачных попыток для каждого регулярного выражения.
Для «нечетких» данных, где некоторые следуют формату, а некоторыенет, я предпочитаю использовать подход регулярных выражений.Это только я, хотя.(Да, это медленнее, но при проектировании взаимосвязей между каждым сегментом сопоставления, чтобы у вас был один запрос (или анализатор), который подходит для каждого углового случая, это кошмар, когда речь идет о вводимых человеком данных.