Рассмотрим следующую многострочный строку:Извлечение пар ключ-значение из многострочного текста в Java
This is multiline text that needs to be correctly parsed into key-value pairs, excluding all other information.
Section One:
First key = Value One
Second key = Value Two
Section Two:
Third key = Value Three
Fourth key = Value Four
Fifth key = Value Five
Section Three:
Sixth key = Value Six
Seventh key = Value Seven
Eighth key = Value Eight
Другими словами, текст состоит из «введения» (некоторые фразы), а затем из нескольких линий, организованных в разделах, каждый из которых имеет «заголовок» (например, Section One
) и несколько пар ключ-значение, разделенных =
. Ключи могут содержать любой символ, кроме новой строки, и =
, и значения могут содержать любой символ, кроме новой строки. Иногда в тексте могут появляться другие нерелевантные строки.
Требуется регулярное выражение, которое приведет к возврату всех групп пар ключ-значение и только тех, которые пропускают как начальные, так и заголовки разделов, а также любую другую строку, у которой нет пары ключ-значение. В идеале, никакая другая предварительная обработка текста или пост-обработка не потребуются. Чтение текста по очереди и обработка соответственно не является вариантом в этом случае использования.
Образцы, подобные (?:\r|\n)(\s*[^=\.]+)\s*=\s*(.+)
, приближаются, но они по-прежнему содержат немного больше требований.
Любые идеи?
Если расстояние является постоянным, а также попробовать '(? <=^{4}) + (= * = * (. *)) ' –
Интервал не постоянный, он не работает. Спасибо хоть. :-) – PNS