Python如何替换正则表达式捕获组中的内容?
-abc1234567-abc.jpgPython如何替换正则表达式捕获组中的内容?,python,regex,Python,Regex,-abc1234567-abc.jpg 我希望删除-abc before.jpg,并获得-abc1234567.jpg。我尝试了re.subr'\d-abc.jpg$',string,但它也会替换捕获组之外的内容,并给出-abc123456。是否可以只替换捕获组中的内容,即“-abc”?一种解决方案是使用正向前瞻,如下所示 import re p = re.compile(ur'(\-abc)(?=\.jpg)') test_str = u"-abc1234567-abc.jpg" subst
我希望删除-abc before.jpg,并获得-abc1234567.jpg。我尝试了re.subr'\d-abc.jpg$',string,但它也会替换捕获组之外的内容,并给出-abc123456。是否可以只替换捕获组中的内容,即“-abc”?一种解决方案是使用正向前瞻,如下所示
import re
p = re.compile(ur'(\-abc)(?=\.jpg)')
test_str = u"-abc1234567-abc.jpg"
subst = u""
result = re.sub(p, subst, test_str)
或
您可以使用两个捕获组,如下所示
import re
p = re.compile(ur'(\-abc)(\.jpg)')
test_str = u"-abc1234567-abc.jpg"
subst = r"\2"
result = re.sub(p, subst, test_str)
一种解决方案是使用正向前瞻,如下所示
import re
p = re.compile(ur'(\-abc)(?=\.jpg)')
test_str = u"-abc1234567-abc.jpg"
subst = u""
result = re.sub(p, subst, test_str)
或
您可以使用两个捕获组,如下所示
import re
p = re.compile(ur'(\-abc)(\.jpg)')
test_str = u"-abc1234567-abc.jpg"
subst = r"\2"
result = re.sub(p, subst, test_str)
如果只想删除jpg文件中的-abc,可以使用:
re.sub(r"-abc\.jpg$", ".jpg", string)
要尽可能接近地使用代码:应该将代码放置在要保留的零件周围,而不是要删除的零件周围。然后使用\g选择字符串的该部分。因此:
re.sub(r'(.*)-abc(\.jpg)$', '\g<1>\g<2>', string)
如果只想删除jpg文件中的-abc,可以使用:
re.sub(r"-abc\.jpg$", ".jpg", string)
要尽可能接近地使用代码:应该将代码放置在要保留的零件周围,而不是要删除的零件周围。然后使用\g选择字符串的该部分。因此:
re.sub(r'(.*)-abc(\.jpg)$', '\g<1>\g<2>', string)
您可以使用积极的前瞻:文档将告诉您可以使用反向引用来替换替换字符串。在需要保留的模式上使用捕获组。关于.subr'\d-abc\.jpg$',r'\1',string.,您可以使用积极的前瞻性:文档将告诉您可以使用反向引用替换替换字符串。在需要保留的模式上使用捕获组。关于.subr'\d-abc\.jpg$',r'\1',字符串.A。在模式中,将匹配除换行符以外的任何字符。我想你是指s.replace-abc.jpg。jpg@WiktorStribi哎呀,哎呀。应该是。。好极了!A.在模式中,将匹配除换行符以外的任何字符。我想你是指s.replace-abc.jpg。jpg@WiktorStribi哎呀,哎呀。应该是。。好极了!