正则表达式搜索数字和字母组合可选括号

时间:2016-11-17 15:52:21

标签: regex

我需要获得一个正则表达式,它会找到一个小写的a-z字符后跟5个数字的匹配:

  • 在一行开头
  • 在一行
  • 被()或[]
  • 包围
  • 被空白包围

因此预计会有以下结果:

a12345 MATCH

(a12345)MATCH

[a12345] MATCH

text a12345 MATCH

aa12345 NO MATCH

目前我有(?<=[])]*)[a-z]{1}[0-9]{5}(?=[])]*),但它并不适用于所有情况,例如,当我不想要它们时,它会将aa12345和a12345a视为匹配。

有人可以帮忙吗?

修改 我应该提到的道歉是针对.NET c#

2 个答案:

答案 0 :(得分:1)

首先,你应该提到编程语言。

以下解决方案适用于 PCRE

正则表达式: ((?<=[\[( ])|^)[a-z]\d{5}((?=[\]\) ])|$)

<强>解释

  1. ((?<=[\[( ])|^)检查前面的括号,空格 OR 开头。

  2. [a-z]\d{5}检查字母表后跟5位数。

  3. ((?=[\]\) ])|$)检查后续括号,空格 OR 行尾。

  4. Regex101 Demo

答案 1 :(得分:0)

这是否有效:

(\[[a-z]\d{5}\])|(\([a-z]\d{5}\))|(\b[a-z]\d{5}\b)