Я пытаюсь проанализировать некоторые табличные данные в теге <pre> и пытаюсь найти правильный шаблон. Я хотел бы последовательно сопоставить все серии символов, разделенные не более чем одним пробелом.
Ввод: ' Not seasonally adjusted Seasonally adjusted (1) Latest'
Желаемый результат:
['Not seasonally adjusted', 'Seasonally adjusted (1)', 'Latest']
'[\S ]+(?!\s{2,})', который дает одно совпадение для всей текстовой строки.'[^\s{2,}]', который соответствует каждому символу, не являющемуся пробелом, в текстовой строке.'.*[^\s{2,}]', который дает одно совпадение для всей текстовой строки.ПРИМЕЧАНИЕ. Я использую Python и не хочу просто делать что-то вроде re.split('\s{2,}'), потому что мне не просто нужен содержащийся текст, но я хочу сохранить начальные и конечные символы каждый фрагмент текста, чтобы передать его в скрипт табличного синтаксического анализатора/интерпретатора.
Как я могу это сделать?
кстати, твой "негатор" делает не то, что ты думаешь: re.findall('[^\s{2,}]','{abc, def, 123}')





import re
re.findall("\S+(?: \S+)*", ' Not seasonally adjusted Seasonally adjusted (1) Latest')
→
['Not seasonally adjusted', 'Seasonally adjusted (1)', 'Latest']
Для меня это хороший подход. Мне не хватало идеи использования группы без захвата. Спасибо!
Я использовал ``, потому что вы написали «пробел», но \s может быть более правильным, если нужно (или нет) обрабатывать другие виды пробелов. например \S+(?:\s\S+)* или [^ ]+(?: [^ ]+)*
Да, я понял эту часть. Спасибо. В итоге я использовал \S(?:(?!\s{2,}).)+ и \S(?:(?!\s{3,}).)+ в качестве запасного варианта для некоторых таблиц, в заголовках которых раздражает использование двойных пробелов.
Попробуйте
r'\b[^\b]*?(?=\s{2,}|$)'? Пример вашей заметки?