Я пытаюсь построить регулярное выражение в C #, чтобы сопоставить мои отсканированные штрих-коды с группами (коды GS1).
Таким образом, каждое поле имеет регулярное выражение для обрезки потока, но символ FNC1 - это конец поля и от 1 до 30 цифр перед, это значение, а первые 2 цифры - идентификатор приложения.
Простой пример:
var value = "9212345678\u00053302123456";
var regex = "((?<Field>([\d]{2}))(?<Value>(\d{1,30}$)).*?)(?<FNC1>[\x00-\x1f\x80-\xFF])";
Result:
Field -> 92
Value -> 12345678
FNC1 -> (char) 5
Но если размер значения превышает 30 цифр, он все равно соответствует, но не разделителю FNC1.
Я попытался использовать позитивный прогноз, но потом он просто развернул совпадения на 30 цифр от конца группы значений.
Может ли кто-нибудь дать мне направление, в котором я должен искать?
Edit:
Чтобы уточнить это:
Поле - это первые 2 цифры в моей строке, затем у меня есть от 1 до 30 цифр, оканчивающихся знаком FNC1 (здесь символ 5 или что-то необычное, как вы могли бы сказать). Если строка значения составляет 33 цифры, она не должна совпадать со значением в регулярном выражении.
Так что этот не должен совпадать:
var value = "921234567890123456789012345678901\u00053302123456";
И значение, стоящее за делителем FNC1, соответствует следующим кодам, в данном примере это «3302123456». Это был бы реальный пример из сканирования.