Python正则表达式从字符串列表中删除特定模式

时间:2016-09-20 09:28:45

标签: python regex python-2.7

我有一个带文件名的字符串列表。文件名遵循特定的命名格式:

string1_YYYYMMDD_HHMMSS_string2

此处YYYYMMDD和HHMMSS是实际的日期和时间值。

我想删除每个条目的'string1'后面出现的所有字符。我一直在试用正则表达式,但没有白费。有人可以帮我这个吗?

2 个答案:

答案 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}_.*

演示:https://regex101.com/r/jS2gL5/1