2016-01-19 103 views
0

我在Java中有一个RegEx,似乎可以在包含内容的所有实例中工作,但它不仅仅是将实例与内容匹配;它也匹配空字符串。由于我匹配的数据,RegEx的所有“部分”必须是可选的,但是我不知道如何指定如果一个部分不存在,其他部分必须存在,反之亦然(大部分时候,这两个部分都存在)。匹配模式,除非匹配是一个空字符串

我现在的正则表达式:(-?[0-9]*)(x\\^?([0-9]*))?

要重复,这是当它匹配现有的字符工作。我只是想阻止它匹配字符之间的空字符串,这是抛出我的方法的其余部分。

编辑:特定的测试字符串我用: "4x^5+x^4+2x^3-16x^2+3x-1000"

+2

一些示例数据与正则表达式一起使用会很好。 –

+0

这个正则表达式会匹配'-','x','x ^','-0x^0' ......等等。那真的是你想要的吗? – Andreas

+0

和你期望在每种​​情况下 – Szymon

回答

1

加入前瞻(?=[0-9x-])必须的东西从你的条件符合尝试这种模式

(?=[0-9x-])((?:-?[0-9]*)(?:x\\^?(?:[0-9]*))?) 


Demo

+0

这有帮助,但在最后一次正确比赛后我仍然有空比赛。 – Imamadmad

+0

举例说明! –

+0

我编辑我的帖子,包括我的测试字符串 – Imamadmad