我有一个带文件名的字符串列表。文件名遵循特定的命名格式:
string1_YYYYMMDD_HHMMSS_string2
此处YYYYMMDD和HHMMSS是实际的日期和时间值。
我想删除每个条目的'string1'后面出现的所有字符。我一直在试用正则表达式,但没有白费。有人可以帮我这个吗?
答案 0 :(得分:5)
你不需要正则表达式,只需在第一个下划线上拆分:
s = 'string1_YYYYMMDD_HHMMSS_string2'
return s.split('_')[0]
[编辑]:
如果你只能依赖最后的部分('_YYYYMMDD_HHMMSS_string2'),那么尝试像这样编制索引:
s = 's_t_r_i_n_g_1_YYYYMMDD_HHMMSS_string2'
return '_'.join(s.split('_')[:-3])
答案 1 :(得分:2)
使用正则表达式:
import re
s = 'string1_YYYYMMDD_HHMMSS_string2'
newstr = re.sub('_.*', '', s)
print(newstr)
注意:
_.*
与_
及其所有后续字符匹配。re.sub(p, r, s)
在s
搜索p
,并将所有匹配项替换为r
。更新#1
string1可能包含其他下划线。我想保留所有string1并且只删除尾随模式。
在这种情况下,您可以使用以下正则表达式:
_\d{8}_\d{6}_.*