正则表达式可选似乎没有意义

时间:2014-07-08 00:27:53

标签: regex

我有这个正则表达式:

^[-]?(0|(([1-9]|[1-9]{1}[0-9]{1}|[1-9]{1}[0-9]{2}){1}(\[0-9]{3}){0,})),(([0-9]{2})|\-\-)$

并使用此测试人员https://www.debuggex.com

我不太了解这个正则表达式,因为我只是复制并粘贴它,但是通过测试人员我试图了解那里发生了什么。我做了,除了一部分。图形告诉我,这是第4组:(\[0-9]{3}){0,})

我无法完全删除它,然后它再也无法工作了,但我可以删除\[0-9]{3}部分,表达式仍然匹配。此外,根据图形输入时,第4组似乎总是四处走动。

所以我的问题是,这部分真的有必要吗?如果,如何?我不知道它的作用。

2 个答案:

答案 0 :(得分:0)

我认为\[0-9]{3}需要更改为[0-9]{3}\[导致文字[而不是字符组,这可能不是预期的。

此正则表达式可能还存在其他问题,但在不知道所需规格的情况下很难提出解决方案。

答案 1 :(得分:0)

{0,}的{​​{1}}部分表示要匹配(stuff){0,}内至少零次的内容,没有指定的最大值,这相当于说()。因此,测试字符串是否包含(stuff)*内的stuff并不重要,但如果确实如此,则{4}将在捕获组4中被捕获。

http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#greedy