RegEx - 匹配第一组四位数......除非

时间:2017-11-22 19:47:01

标签: regex

我有一组字符串,我需要从中提取一组数字。在下面的模式中,我尝试选择zzzz处的值。

xxxx - yyyy - aaaa - zzzz - any text here - any text here <= Example #1

xxxx - yyyy - zzzz - any text here - any text here <= Example #2

我知道以下有关数据的信息:

  1. xxx将始终为三位数
  2. yyyy可以是数字或字母字符
  3. zzzz将始终由四位数字组成
  4. aaaa可以是任何字符序列,但也可能完全丢失,如例#2所示
  5. 我原本以为我可以在正则表达式(?!1111)\d{4}中使用否定前瞻,因为序列1111通常出现在我想要捕获的四位数之前。

    432 - 1111 - 2300 - 存储

    411 - 1111 - 6483 - 学校

    然而情况并非如此,如下所示。

    321 - StorageZone - 1710 - 仓库

    此外,有时1111处于我想捕捉的位置。

    002 - 1111 - 1111 - 机房(这里我想选择111,因为它是1111的第二个实例)

    981 - 0110 - 1111 - 地下室(这里1111是我需要的号码)

    所以我很困惑如何捕获zzzz的值并且可以使用一些正则表达式的建议。感谢。

1 个答案:

答案 0 :(得分:0)

在JavaScript表示法中,它将是这样的:

^\d{3} - [a-zA-Z0-9]{1,}?( - .*?)?? - (\d{4})( - [^0-9]*){1,2}$

你将需要第二个捕获组

这里的想法是你需要字符串中的最后 4位数字。

您可以使用此DEMO

进行测试