Я хотел бы заменить несколько вертикальных полос (|
) в строке новой строкой (\n
).Однако существуют определенные условия, в которых он не должен заменяться, например строка обозначения цвета.
Рассмотрим следующий ввод:
Sample|text||new line|||cFFFFFF00|HEX|colorText in color|this will be inner new line|cFFFFFFFF|HEX|colorReset color. The following goes into the next line too:||hello world
Используя следующий вызов re.sub
:
re.sub(r"(?:\|\|\w{9}\|HEX\|color.*?|([\|])?\|\w{9}\|HEX\|color)|(\|)", '\n', input)
в соответствии с этот тест , желаемый результат должен быть:
Sample
text
new line
||cFFFFFF00|HEX|colorText in color
this will be inner new line|cFFFFFFFF|HEX|colorReset color. The following goes into the next line too:
hello world
Вместо этого вывод:
Sample
text
new line
Text in color
this will be inner new line
Reset color. The following goes into the next line too:
hello world
Вы можете проверитьэто сам здесь .
По-видимому, метод re.sub
также заменяет здесь не захваченную группу, чего я не хочу, чтобы это произошло.
Как можноМне удается правильно заменить только соответствующие группы шаблона на re.sub
?