选择前面没有的最长整数

时间:2016-08-11 09:35:09

标签: java regex

我正在尝试匹配长度在9到12位之间且不在43200之前的数字 - 。

(?<!43200-)([0-9]{9,12})

因此,当匹配43200-990003543654时,结果是90003543654,因为这之前是43200-9,所以这是一个匹配。

这不是我想要的,这不应该匹配。

但我似乎无法弄清楚如何解决这个问题。

非常感谢任何帮助

谢谢, 格伦

1 个答案:

答案 0 :(得分:1)

对于初学者,你需要在开始时使用单词边界来防止误报,例如111143200-...

你最后还需要字边界,以防止较长数字的前12位数字匹配。

但你主要需要看一下5位数字和短划线

(?<!\b43200-)(?<=\b\d{5}-)\d{9,12}\b

或者,如果不需要前缀,则不以数字

开头
(?<!\b43200-)(?<!\d)\d{9,12}\b