【问题标题】:getting specific hyphen letter number mix using regex使用正则表达式获取特定的连字符字母数字组合
【发布时间】:2019-09-10 00:10:07
【问题描述】:
import re
s = 'N18-2181, 59-year-old, E12-34567, O18-517, BL-17-1111, 18S-8, L1-12, 21-year old, 40-year-old, 67-years, BL-14-111, 91-years, AL-1-2, 01-13-2019, 1-22-2001'
reg = r'[()\d-]{7,}'
r1 = re.findall(reg,s)

我有以下reg 提供以下内容

['18-2181', '12-34567', '-17-1111', '-14-111', '01-13-2019', '1-22-2001']

但我想要以下输出

['N18-2181', 'E12-34567', 'O18-517', 'BL-17-1111', '18S-8', 'L1-12', '6BL-14-111', 'AL-1-2']

如何调整 reg = r'[()\d-]{7,}' 以获得上面的输出?

【问题讨论】:

  • 是什么让185-8BL-17-1111 有效但01-13-2019 无效?
  • 其实是18S-8
  • so 01-13-2019 无效,因为它不包含字母

标签: regex python-3.x string text


【解决方案1】:

这个正则表达式应该会给你你想要的结果。它断言第一组至少包含一个字母字符,然后捕获一组字母数字字符,后跟 1 或 2 组 - 和数字。

\b(?=\d*[A-Z])((?:[A-Z0-9]+)(?:-\d+){1,2})\b

Demo on regex101

Demo on rextester

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    相关资源
    最近更新 更多