python中字符串格式的正则表达式re.sub

python中字符串格式的正则表达式re.sub,python,python-2.7,Python,Python 2.7,对正则表达式很陌生,我正在努力掌握它们 string = "regex_learning.test" subbed = re.sub(r'(.*)_learning(.*), r'\1', string) 我所希望的是打印子床时作为输出的“regex.test”,但是我只得到“regex” 有人能解释一下为什么我考试不及格吗 提前感谢使用此: subbed = re.sub(r'(.*)_learning(.*)', r'\1' + r'\2', string) 您也可以将其编写为: sub

对正则表达式很陌生,我正在努力掌握它们

string = "regex_learning.test"
subbed = re.sub(r'(.*)_learning(.*), r'\1', string)
我所希望的是打印
子床时作为输出的
“regex.test”
,但是我只得到
“regex”

有人能解释一下为什么我考试不及格吗

提前感谢

使用此:

subbed = re.sub(r'(.*)_learning(.*)', r'\1' + r'\2', string)
您也可以将其编写为:

subbed = re.sub(r'(.*)_learning(.*)', "%s%s" % (r'\1', r'\2'), string)

你能解释一下那里的+r'\2'是怎么回事吗?如果我能够按照脚本所说的内容进行操作,
\1
会为您提供第一个
()
捕获的匹配,而
\2
会为您提供第二个
()
捕获的匹配。后者捕获字符串的
.text
部分。您希望将两个匹配项中的替换字符串连接起来。这太棒了。非常感谢。当然,没问题。如果这对您有效,请务必接受答案。@user3234810:与其使用
*
,不如使用
*?
,这样可以提供非贪婪匹配。因此,
(.*)
将变成
(.*)
请参见中的
*?、+?、??