如何使用替换摆脱数字?

时间:2014-09-28 20:04:27

标签: javascript regex

我有类似的东西:

/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

提前致谢。

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 ) ]