Я хотел бы проверить линию, как это:Регулярное выражение для "|" отделенные значения
Price (sales)||ALL|Table|HOTP3060|General|3000||||B2B|BUC|149.9|RON|0|0|0|18.05.2016|31.12.2099|YES
Прежде всего мне не нужно быть очень конкретным. Просто проверьте правильность количества вертикальных баров. Как показано выше, некоторая информация между столбцами отсутствует. Это не ошибка, просто отсутствует, мы должны перейти к следующей вертикальной панели и так далее.
Ошибка должна быть замечена, если какая-либо из "|" не хватает.
Еще одна вещь, поля, содержащие 3000, 149,9, должны быть ограничены как десятичные числа.
псевдокод для этого, как я вижу это:
любые символы или отсутствуют | любые символы или отсутствующие | .... | dec значение или отсутствует |
- и даты формат фиксирован: дд.мм.гггг
Я начал с:
[a-zA-Z()]+\|\|[a-zA-Z]+\|[a-zA-z]+\|[a-zA-Z0-9]+\|
, но я не выяснить, как упомянуть о том, что некоторые данные могут отсутствовать.
Что-то вроде:
- [A-Za-Z()] + символы или ничего |
- [a-zA-Z0-9] + \ | символы и цифры или ничего |
OK я получил здесь:
[a-zA-Z()]+\|\|[a-zA-Z]+\|[a-zA-z]+\|[a-zA-Z0-9]+\|[a-zA-Z]+\|[0-9]+\|\|\|\|[a-zA-Z]+\|[a-zA-Z]+\|\d+(\.\d{1,2})\|[a-zA-Z]+\|\d+\|\d+\|\d+\|[0-9]+\.[0-9]+\.[0-9]+\|[0-9]+\.[0-9]+\.[0-9]+\|\w+
Все разбирается .. но, как мне кажется, довольно некрасиво ..
ИМХО, ваш вопрос не показывает исследовательских усилий. Есть [много] (http://regexone.com/) мест, чтобы получить отправную точку ... – OzW
Я начал с [a-zA-Z()] + \ | \ | [a-zA-Z ] + \ | обнаружение первых двух столбцов, но я не могу узнать, как указать «отсутствующий» вариант. –
вы должны поставить это в свой вопрос :) – OzW