我正在寻找一种使用正则表达式剪切字符串的方法
例如,如果我有以下字符串
abcde.dhsjd.djshdj.(2019).(14856p).abdjskf
我想得到:
abcde dhsjd djshdj 2019
我已经有关注
file_sub = re.sub(r'[\.()]+', ' ', file)
split_file= re.split(r'[\d+]', file)
当我运行代码时,它会在4位数字之前中断。 像这样:
abcde dhsjd djshdj
有什么解决办法吗?
答案 0 :(得分:0)
将re.sub
与回调函数一起使用:
inp = "abcde.dhsjd.djshdj.(2019).(14856p).abdjskf"
def cb(m):
return m.group(1).replace('.', ' ') + m.group(2)
output = re.sub('^(.*?)\((\d+)\).*$', cb, inp)
print(output)
此打印:
abcde dhsjd djshdj 2019
此处的策略是将两个单独的捕获组中的第一个点分隔的部分和年份匹配。然后,在回调函数中,将点替换为空格并连接在一起。