Вы можете сопоставить все строки, в которых вы хотите заключить слова, в двойные кавычки, используя {([\w\s,]+)}
regex, а затем обернуть слова отдельной re.sub
:
import re
r = r'{([\w\s,]+)}'
s = "{Cat}\n{Cow Pig}\n{Cat,Dog}\ncat dog fish"
print( re.sub(r, lambda x: "{{{}}}".format(re.sub(r'\w+', r'"\g<0>"', x.group(1))), s) )
См. Демоверсию Python
Выход:
{"Cat"}
{"Cow" "Pig"}
{"Cat","Dog"}
cat dog fish
Основное регулярное выражение для извлечения: {([\w\s,]+)}
( demo ), но вы можете указать его как {\s*(\w+(?:\s*(?:,\s*)?\w+)*)\s*}
(см. это демонстрационное выражение regex ).
Детали
{
- {
char
([\w\s,]+)
- Группа 1: одно или несколько слов, пробелов или ,
символов
}
- }
char
Regex 2
{\s*
- {
и 0+ пробелов
(\w+(?:\s*(?:,\s*)?\w+)*)
- Группа 1:
\w+
- 1 или более символов слова
(?:\s*(?:,\s*)?\w+)*
- 0 или более повторений
\s*
- 0+ пробелов
(?:,\s*)?
- необязательная последовательность ,
и 0+ пробелов
\w+
- 1+ слово символов
\s*}
- 0+ пробелов и }