我有这样的文件名
ios_g1_v1_yyyymmdd
ios_g1_v1_h1_yyyymmddhhmmss
ios_g1_v1_h1_YYYYMMDDHHMMSS
ios_g1_v1_g1_YYYY
ios_g1_v1_j1_YYYYmmdd
ios_g1_v1
ios_g1_v1_t1_h1
ios_g1_v1_ty1_f1
我只想删除与字符串YYYYMMDDHHMMSS OR yyyymmdd OR YYYYmmdd OR YYYY匹配的后缀
我的预期输出是
ios_g1_v1
ios_g1_v1_h1
ios_g1_v1_h1
ios_g1_v1_g1
ios_g1_v1_j1
ios_g1_v1
ios_g1_v1_t1_h1
ios_g1_v1_ty1_f1
我怎样才能在python中使用regex来实现这个呢?我尝试了类似下面的方法,但是没有成功
word_trimmed_stage1 = re.sub('.*[^YYYYMMDDHHMMSS]$', '', filename)
6条答案
按热度按时间rpppsulh1#
您可以显式地使用已标识的确切模式,也可以选择不区分
re.I
的大小写:re.I
时,您只需要yyyymmdd
/YYYYmmdd
中的一个。*压缩变体:
输出:
t9aqgxwy2#
要删除以"YYYYMMDDHHMMSS"或其他指定格式结尾的字符串,可以使用rstrip方法。此方法将删除指定字符串中出现在目标字符串末尾的所有字符。
下面是如何使用它的示例:s ="abcdefgYYYYMMDDHHMMSS"后缀="YYYYMMDDHHMMSS"
也可以使用将"YYYYMMDDHHMMSS"替换为适当的格式字符串,来删除其他指定格式。
7vhp5slm3#
**免责声明:**这是一个非正则表达式的方法;@mozway发布了一个很好的正则表达式方法
vfhzx4xs4#
IIUC,您的模式包含
Year, Month, Day, Hour, Minute, Second
字符,这些字符以下划线开头,并且不区分大小写。试试这个模式
r"_Y+M*D*H*M*S*"
-解释
_
与模式开头的下划线匹配flags=re.IGNORECASE
使此模式搜索不区分大小写Y+
至少与Y
的一个示例匹配1.然后,
M*D*H*M*S*
按顺序匹配初始Y
之后这些特定字符的任何示例(从0个示例开始)hsvhsicv5#
这可以是另一种方法
输出:
k7fdbhmy6#
尝试删除最后一次检测到
_
之后的所有内容。