如何编写正则表达式:替换非冒号同词的换行符为空格
解决方案
你需要的正则表达式可以通过负向预查实现,用来排除那些换行后紧跟设置项(即\S+:格式)的换行符,只替换属于同一设置内容的换行。
正则表达式与代码示例
import re string = '\nsetting1: short string\nsetting2: much longer string\nwith a newline in it\nsetting3: short string\n' # 正则表达式:匹配换行符,且换行后不是以"非空白字符+冒号"开头 regex = r'\n(?!\S+:)' result = re.sub(regex, ' ', string) print(repr(result))
输出结果
'\nsetting1: short string\nsetting2: much longer string with a newline in it\nsetting3: short string '
正则逻辑说明
\n:匹配目标换行符(?!\S+:):负向预查断言,确保当前换行符之后不是以「一个或多个非空白字符+冒号」开头(也就是排除分隔不同设置项的换行符)。只有满足这个条件的换行符,才会被替换为空格。
这样就精准实现了你要的需求:保留设置项之间的换行,将同一设置内容内的换行替换为空格。
内容的提问来源于stack exchange,提问作者Ben Nouhan
相关产品推荐
相关产品推荐

