以 2 个字母开头并以 3 个字母结尾的匹配正则表达式

Regex for match beginning with 2 letters and ending with 3 letters

示例输入:

'Please find the ref AB45676785567XYZ. which is used to identify reference number'

示例输出:

'AB45676785567XYZ'

我需要 RegExp 到 return 完全符合我要求的比赛;即前 2 个和后 3 个字符为字母的子字符串。

前 2 个和后 3 个字母未知。

我已经试过了 RegExp:

[a-zA-Z]{2}[^\s]*?[a-zA-Z]{3}

但未按预期匹配。

以 2 个字母开头:

[a-zA-Z]{2}

中间的数字:

\d+

以 3 个字母结尾:

[a-zA-Z]{3}

完整的正则表达式:

[a-zA-Z]{2}\d+[a-zA-Z]{3}

如果中间的文字是Alpha-Numeric,可以这样用:

[A-Z]{2}[^\s]+[A-Z]{3}

您当前的 RegExp 匹配以下用代码块标记的单词:

Please find the ref AB45676785567XYZ. which is used to identify reference number

这是因为您的 RegExp[a-zA-Z]{2}[^\s]*?[a-zA-Z]{3} 要求:

  • [a-zA-Z]{2} 以 2 个字母开头(无论大小写)
  • [^\s]*? 包含任何非空格的内容
  • [a-zA-Z]{3} 以 3 个字母结尾(无论大小写)

在您当前的示例中,将字母限制为大写将仅匹配您要查找的匹配项:

[A-Z]{2}[^\s]+[A-Z]{3}

或者,要求 2 个开头字母和 3 个结尾字母之间的数字也会产生您想要的匹配:

[a-zA-Z]{2}\d+[a-zA-Z]{3}

这里真正重要的是单词边界 \b,试试:\b[a-zA-Z]{2}\w+[a-zA-Z]{3}\b

解释:

\b - 单词边界

[a-zA-Z]{2} - 匹配任意字母,2 次

\w+ - 匹配一个或多个单词字符

[a-zA-Z]{3} - 匹配任意字母,3 次

\b - 单词边界

Demo

注意你的要求是模棱两可的,因为任何由 5 个或更多字母组成的单词都会匹配模式