使用正则表达式从字符串中删除日期?

2024-05-16 20:06:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串,看起来像:

str_in = "Lemons: J2020, M2021. Eat by 9/03/28
    Strawberries: N2023, O2024. Buy by 10/10/20"

我怎样才能得到"J2020, M2021, N2023, O2024"

到目前为止,我所拥有的都是硬编码的。它是:

str_in.replace("Lemon:","")
str_in.replace("Strawberries:", "")
str_in.replace("Buy by")

如果日期与指定的数字不同,我不知道如何删除日期。有我可以使用的正则表达式表格吗


Tags: 字符串in编码bybuyreplacelemonstr
3条回答
import re

string = "Lemons: J2020, M2021. Eat by 9/03/28 Strawberries: N2023, O2024. Buy by 10/10/20"

array = re.findall(r"\b[A-Z]\d{4}\b", string)

result = ','.join(array)

结果字符串是“J2020、M2021、N2023、O2024”

数组是['J2020'、'M2021'、'N2023'、'O2024']

我刚刚看到了你编辑过的问题,所以,这是我编辑过的答案

import re
re_pattern = re.compile(r'(\w+),\s(\w+)\.')

data = [ 'Lemons: J2020, M2021. Eat by 9/03/28',
         'Strawberries: N2023, O2024. Buy by 10/10/20',
         'Peaches: N12345, O123456. Buy by 10/10/20'
        ]

for line in data:
    match = re_pattern.search(line)
    if match:
        print(match.group(1), match.group(2))

根据您的原始帖子和后续评论,您可以使用以下正则表达式显式获取要保留的字符串:\b[A-Z]+\d+\b。它允许1个或多个字母后跟1个或多个数字,以单个单词为界。要在将来测试它和其他正则表达式,请使用this great online tool

这里最好使用regex类上的findall()方法,因为它将返回此模式的所有实例。有关findall()和其他类型的匹配方法的更多信息,请查看this tutorial

把所有这些放在一起,代码将是:

values = re.findall(r'\b[A-Z]+\d+\b', str_in)

一定要先import re

相关问题 更多 >