Я использую Java и парсинг строки данных, имеющих переменную длину данных, как показано ниже,Регулярное выражение для разбора конкретного набора данных
kv {
key "prefix"
str_value "prefix1"
}
kv {
key "init"
int_value 1
}
kv {
key "init"
}
Как мы можем видеть, что последний Kv тег имеет одно поле значение недостающего но все же действительны. Подумайте, какое регулярное выражение я должен использовать для извлечения любых данных между тегами kv {}, как показано ниже.
ключ "префикс" str_value "prefix1"
ключ "INIT" int_value 1
ключ "INIT"
Вот код, я использую, чтобы получить Kv разделители.
scan = new Scanner(new File(this.getFileName())).useDelimiter(".*kv\\s*\\{\\s*[^}].*+");
System.out.println(scan.next());
Возможно, вы не должны использовать регулярные выражения, чтобы попытаться проанализировать несколько строк, особенно с этим регулярным выражением в качестве «разделителя». Regex является мощным, но не всегда правильным инструментом для работы. Вероятно, вам нужен простой анализатор на основе токенов. –
@JimGarrison Для парсера, основанного на токенах, следует ли читать строки за строкой и проверять каждую строку «startswith» или любой другой эффективный способ делать? – Ammad