繁体   English   中英

如何提取两个字符之间的子字符串?

[英]How to extract a sub-string between two characters?

我想提取my_list所有日期

my_list = ['FRE_5F_20200915-08u21m57s_ab', 'AY_C7_20200813-17u02m16s_ab', 'ALL_20200915-06u34m05s_ab', 'FF_20200816-11u21m44s_ab']

这是我的代码:

for file in my_list:
    find = re.search('_(.+?)-', file).group(1)
    print(find)

这是输出:

5F_20200915
C7_20200813
20200915
20200816

这是我的预期输出:

20200915
20200813
20200915
20200816

您可以使用_(\\d+)- Regex101

import re


my_list = ['FRE_5F_20200915-08u21m57s_ab', 'AY_C7_20200813-17u02m16s_ab', 'ALL_20200915-06u34m05s_ab', 'FF_20200816-11u21m44s_ab']
r = re.compile(r'_(\d+)-')

for s in my_list:
    m = r.search(s)
    if m:
        print(m.group(1))

印刷:

20200915
20200813
20200915
20200816

修复了您的正则表达式,您的输出与您的正则表达式匹配。 要仅匹配_-之间的数字,您可以使用'_(\\d+)-' ,如下所示

import re
my_list = ['FRE_5F_20200915-08u21m57s_ab', 'AY_C7_20200813-17u02m16s_ab', 'ALL_20200915-06u34m05s_ab', 'FF_20200816-11u21m44s_ab']
for file in my_list:
    find = re.search('_(\d+)-', file).group(1)
    print(find)

这导致

20200915
20200813
20200915
20200816

这可以在没有正则表达式的情况下完成:

for s in my_list:

    # find the index of -
    index = s.index("-")

    # extract 8 characters before that
    print(s[index-8:index])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM