Python 使用re.sub删除换行符

Python 使用re.sub删除换行符,python,regex,Python,Regex,为什么结果是“bc”而不是“abc” >>> import re >>> re.sub('-\n([a-z])', '','-\nabc',re.M) 'bc' 用替换字符串替换匹配的模式([a-z])此处也匹配,因此将其删除。要避免这种情况,可以使用前瞻语法: import re re.sub('-\n(?=[a-z])', '','-\nabc',re.M) # 'abc' 用替换字符串替换匹配的模式([a-z])此处也匹配,因此将其删除。要避免这种情

为什么结果是“bc”而不是“abc”

>>> import re
>>> re.sub('-\n([a-z])', '','-\nabc',re.M)
'bc'
用替换字符串替换匹配的模式<代码>([a-z])此处也匹配,因此将其删除。要避免这种情况,可以使用前瞻语法:

import re
re.sub('-\n(?=[a-z])', '','-\nabc',re.M)
# 'abc'
用替换字符串替换匹配的模式<代码>([a-z])此处也匹配,因此将其删除。要避免这种情况,可以使用前瞻语法:

import re
re.sub('-\n(?=[a-z])', '','-\nabc',re.M)
# 'abc'

您只需指定要替换的字符串:

re.sub('-\n','-\nabc')

我只回abc


您可以指定要替换的字符串:

re.sub('-\n','-\nabc')

我只回abc


因为
[a-z]
只取1个字符如果不在替换字符串中放置对捕获的引用,则捕获无效:
r'\1'
因为
[a-z]
只取1个字符如果不在替换字符串中放置对捕获的引用,则捕获无效:
r'\1'