我有类似的东西:
/MyFile/14/file_1.txt
/MyFile/17/file_2.txt
/MyFile/10/file_3.txt
如何在正则表达式中使用replace?将它们变成
file 1
file 2
file 3
我试过
.replace('/Myfile/\d+/', '').replace('_', '').replace('.txt', '')
,输出
/MyFile/14/file 1
/MyFile/17/file 2
/MyFile/10/file 3
提前致谢。
答案 0 :(得分:1)
您不需要使用多个替换,您只需要使用捕获组:
import re
p = re.compile(r'^.*/(.+)_(\d+)\.txt$')
repl = r'\1 \2'
result = re.sub(p, repl, yourstring)
请注意,在编写模式时,需要使用原始字符串(r'....'
)以避免双重反斜杠。
答案 1 :(得分:1)
如果输入数据是多行字符串,以下代码将生成您想要的内容。它使用正则表达式和python re
模块的sub()方法。
在正则表达式^/MyFile/\d+/file_(\d+).txt$中,括号定义捕获组,后者可以使用\1
在替换文本中使用(其中1
用于1 st 捕获组)。
另请注意字符串r
的{{1}}前缀,这意味着python raw string并避免我们逃避反斜杠。
r'^/MyFile/\d+/file_(\d+)\.txt$'
产生
import re
data = """\
/MyFile/14/file_1.txt
/MyFile/17/file_2.txt
/MyFile/10/file_3.txt
"""
re_file_number = re.compile(r'^/MyFile/\d+/file_(\d+)\.txt$', re.MULTILINE)
print re_file_number.sub(r'file \1', data)
答案 2 :(得分:-1)
re
可能会有所帮助[ x.replace( "_", " " ) for x in re.compile( "(?<=/MyFile/[0-9][0-9]/).+(?=.txt)" ).findall( aString ) ]