Вы должны немного лучше определить, какие возможности и какие правила вы хотите применить.
Я думаю, что правило типа 'любое слово, содержащее как минимум 2 заглавных буквы или тире, предшествующее и следующеечерез пробел или \ n ' может работать для вас.Если это так, вот ваш RegEx:
import re
my_string = "\nInhaltse / techn. Angaben*\n\nAQUA • COCO-GLUCOSIDE • COCOSULFATE • SODIUM\n\n"
print(re.findall(r"(?<=\n|\s)[A-Z-]{2,}(?=\n|\s)", my_string))
Выход:
['AQUA', 'COCO-GLUCOSIDE', 'COCOSULFATE', 'SODIUM']
и вот как вы читаете RegEx:
(?<=\n|\s)
означает с предшествующей (?<=
) новой строкой (* 1021)*) или (|
) пробел (\s
)
[A-Z-\s]{2,}
означает как минимум два ({2,}
) заглавные буквы, тире и пробелы ([A-Z-\s]
)
(?=\n|\s)
означает , за которыми следует (?=
)новая строка (\n
) или (|
) пробел (\s
)
или дляподгонка лучше вашего запроса:
получите список пунктов между точками
, которые вы можете использовать:
r"(?<=\n\n|\•\s)[A-Z-\s]{2,}(?=\n\n|\s\•)"
, что означает:
как минимум 2 заглавные буквы, тире или пробелы, перед которыми стоят две новые строки или точка и пробел, а затем две новые строки или пробел и точка