gpt4 book ai didi

python - 正则表达式从字符串中提取用户名/名称

转载 作者:行者123 更新时间:2023-12-03 16:49:16 27 4
gpt4 key购买 nike

我有字符串,其中包含名称,有时在字符串中包含用户名,后跟日期时间戳:

GN1RLWFH0546-2020-04-10-18-09-52-563945.txt
JOHN-DOE-2020-04-10-18-09-52-563946t64.txt
DESKTOP-OHK45JO-2020-04-09-02-27-11-451975.txt
我想从此字符串中提取用户名:
GN1RLWFH0546
JOHN-DOE
DESKTOP-OHK45JO
我尝试了不同的正则表达式模式,我最接近提取的是以下内容:
GN1RLWFH0546
DESKTOP
JOHN
使用以下正则表达式模式:
names = re.search(r"\(?([0-9A-Za-z]+)\)?", agent_str)
print(names.group(1))

最佳答案

您可以获取直到第一次出现 - 的所有文本+数字+ - :

^.*?(?=-\d+-)

如果数字必须正好是 4 位数字(例如,如果是年份),则替换 +{4} :
^.*?(?=-\d{4}-)

regex demo

详情
  • ^ - 字符串开头
  • .*? - 除换行符以外的任何 0+ 字符,尽可能少
  • (?=-\d+-) - 直到第一次出现 -和 1+ 位数字(或者,如果使用 \d{4},则正好是四位数字),然后是 - (这部分不会添加到匹配值中,因为正向前瞻是一种非消耗模式)。

  • Python demo :
    import re
    strs = ["GN1RLWFH0546-2020-04-10-18-09-52-563945.txt", "JOHN-DOE-2020-04-10-18-09-52-563946t64.txt", "DESKTOP-OHK45JO-2020-04-09-02-27-11-451975.txt"]
    rx = re.compile(r"^.*?(?=-\d+-)")
    for s in strs:
    m = rx.search(s)
    if m:
    print("{} => '{}'".format(s, m.group()))

    输出:
    GN1RLWFH0546-2020-04-10-18-09-52-563945.txt => 'GN1RLWFH0546'
    JOHN-DOE-2020-04-10-18-09-52-563946t64.txt => 'JOHN-DOE'
    DESKTOP-OHK45JO-2020-04-09-02-27-11-451975.txt => 'DESKTOP-OHK45JO'

    关于python - 正则表达式从字符串中提取用户名/名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61155060/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com