我需要找到一堆文件名中3或4位数字后的空格,并用下划线替换空格。但我好像连4个数字都找不到。你知道吗
s = "the blue dog and blue cat wore blue hats"
p = re.compile(r'blue (?P<animal>dog|cat)')
print(p.sub(r'gray \g<animal>',s))
#Gives basically what I want.
the gray dog and gray cat wore blue hats
s = "7053 MyFile.pptx"
p = re.compile('[0-9][0-9][0-9][0-9](?P<dig> )')
print(p.sub('_\g<dig>', s))
#Takes out the numbers, which I need to keep
_ MyFile.pptx
我似乎做的每件事都有一个去掉数字的表达式,我需要保留它。你知道吗
最后,我想
7035个我的文件.pptx你知道吗
成为
7035个_我的文件.pptx你知道吗
如果要将3或4位数字后跟空格替换为相同的数字后跟下划线,则正确的正则表达式语法/替换为:
您可能误读了组/反向引用的工作方式。组中应该包含的内容,需要在括号内。如果要使用命名组(这有点不必要):
或者使用类似于您的示例的预编译正则表达式:
{3,4}
后面的[0-9]
表示三到四个匹配项。\s
代表空格(不仅仅是空格)。你知道吗实际上,只要查找3位数字就可以匹配4位数字,因为我们不限制匹配模式之前发生的事情。根据您要查找的内容,您可能希望通过在模式前面的字边缘加上
^
(行首)或\b
空字符来限制匹配。。。你知道吗相关问题 更多 >
编程相关推荐