【问题标题】:Regular Expression pattern in [duplicate][重复]中的正则表达式模式
【发布时间】:2021-10-06 17:28:19
【问题描述】:

我有一个充满元数据的字符串,我只想检索一些具有模式的独特尾声:一个字母 + 4 个数字,即:R0001、D0453、L0465

我目前正在查询这个:

re.findall(r'\bD[0-9999]*', test_data6)

然后我更改所有字母表的字母并运行脚本。有没有一种方法可以轻松找到所有特定模式?

我试过了:re.findall(r'\b[A-Z]+[0-9999]*', test_data6),但没有得到我需要的东西

【问题讨论】:

  • [0-9999] 是写[0-9] 的一种非常低效的方式。字符类匹配单个字符;再次提及同一个字符不会使其匹配更多字符。
  • re.findall(r'\b[A-Z]\d{4}\b', test_data6)
  • 简而言之,您当前的[0-9999] 是在说“我想要字符0,1,2,3,4,5,6,7,8,9 以及999。而不是[0-9]{4}

标签: python regex python-re


【解决方案1】:

你可以这样做:

import re
s = "D5678 G562 HHJ2 HZ981112"
re.findall(r"[A-Z][0-9]{4}", s)  # ['D5678', 'Z9811']

[A-Z] 将匹配任何大写字母,[0-9]{4} 将匹配任何从 0 到 9 的 4 个数字的字符串。

【讨论】:

  • 如果[A-Z]+ 中的+ 只想匹配数字前的单个字符,则它们是错误的。
  • 根据 OP 的[0-9999],我猜[0-9]{1,4} 会更符合他们的要求。
  • 看起来 OP 正在寻找“一个字母 + 4 个数字”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 2016-11-16
  • 2016-01-11
  • 2021-06-01
  • 1970-01-01
相关资源
最近更新 更多