Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python如何替换正则表达式捕获组中的内容?_Python_Regex - Fatal编程技术网

Python如何替换正则表达式捕获组中的内容?

Python如何替换正则表达式捕获组中的内容?,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

-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 = 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哎呀,哎呀。应该是。。好极了!