Python 搜索字符模式,如果存在则缩进

Python search for character pattern and if exists then indent

我有一个文本模式,我想找到它并将其推到一个新行。模式是 ), 后跟 space 和一个字符。像这样 -

text_orig =

text cat dog cat dog
),
text rabbit cat dog
), text coffee cat dog. #need to indent this line

它将成为

text_new =

text cat dog cat dog
),
text rabbit cat dog
), 
text coffee cat dog

我非常接近解决方案,但坚持使用哪种方法。目前,我正在使用 re.sub 但我相信这样会删除文本的第一个字母 -

text_new =

text cat dog cat dog
),
text rabbit cat dog
), 
ext coffee cat dog # removes first letter
re.sub('\),\s\w','), \n',text_orig)

我需要 search 而不是 sub 吗?非常感谢帮助

您可以使用

re.sub(r'\),[^\S\n]*(?=\w)', '),\n', text_orig)

参见regex demo

或者,如果模式只匹配行首,则应添加 ^re.M 标志:

re.sub(r'^\),[^\S\n]*(?=\w)', '),\n', text_orig, flags=re.M)

这里,

  • ^ - 行首(带有 re.M 标志)
  • \), - ), 子串
  • [^\S\n]* - 除 LF 字符
  • 之外的零个或多个空格
  • (?=\w) - 正向前瞻,需要紧靠当前位置右侧的单词 char。