我有这个正则表达式:
^[-]?(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组似乎总是四处走动。
所以我的问题是,这部分真的有必要吗?如果,如何?我不知道它的作用。
答案 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