У меня есть 2k + записей с правилом следования строк (LOCATION I UPPERCASE - text) x несколько раз, например:
I- TRZON - Fragmenty błony śluzowej trzonu żołądka w stanie przewleklego
powierzchownego (++) aktywnego (++) zapalenia. W barwieniu Warthin-Starry
nie stwierdza się bakterii odpowiadających Helicobacter pylori. II-ANTRUM +
KĄT - Fragmenty błony śluzowej części odźwiernikowej żołądka w stanie
przewlekłego głębokiego zapalenia (+++). W barwieniu Warthin-Starry nie
stwierdza się bakterii odpowiadajacych Helicobacter pylori.
, которые я пытаюсь разбить следующим образом с помощью регулярных выражений:
Location - I- TRZON
Text Fragmenty błony śluzowej trzonu żołądka w stanie przewleklego powierzchownego (++) aktywnego (++) zapalenia. W barwieniu Warthin-Starry nie stwierdza się bakterii odpowiadających Helicobacter pylori.
Location II- ANTRUM + KĄT
Text Fragmenty błony śluzowej części odźwiernikowej żołądka w stanie przewlekłego głębokiego zapalenia (+++). W barwieniu Warthin-Starry nie stwierdza się bakterii odpowiadajacych Helicobacter pylori.
До сих пор мне удавалось сделать это, создав нечто подобное
([A-ZŻŹĆĄŚĘŁÓŃ\s,+\-0-9]*)[\s]?-+?(.*[^A-ZŻŹĆĄŚĘŁÓŃ\s,+\-0-9]) ([A-ZŻŹĆĄŚĘŁÓŃ\s,+\-0-9]+)*[\s]?-+?(.*)
Но, очевидно, он не может управлять теми строками, где возможна одна или три пары местоположения и текста.Основными проблемами, с которыми я столкнулся, являются дефисы, используемые в тексте (см. Warthin-Starry).
Если я попробую что-нибудь более изящное, например
([A-ZŻŹĆŃĄŚŁĘÓ]+[\s-\+,]*?)-(.*)
Это, очевидно, соответствует только слову перед первымдефис в первую группу, а все остальное в следующую.
Подводя итог: как перевести в регулярное выражение что-то вроде: сопоставить, разбить на две группы: 1) верхний регистр текста с любыми другими знаками (без строчных букв),затем 2) текст, то есть до тех пор, пока вы столкнетесь с другим текстом в верхнем регистре.
Я должен признать, что я довольно плохо знаком с регулярным выражением, но я искал несколько дней и, похоже, ничего не работает универсально (иэто только начало извлечения данных из этой строки ...)