想象一下使用正则表达式捕获输入:
2.1_3_4
3.2.1
3.2.1.RELEASE
3.2.1.SNAPSHOT
数字和点数很容易获得
([0-9\._]+)
但你怎么捕获那个加上“RELEASE”或“SNAPHOT”或者没有一个?
我和操作员玩弄无济于事......
([0-9\._]+RELEASE||SNAPSHOT) // no worky
不过,这是一个很好的正则表达式测试器:http://java-regex-tester.appspot.com/
答案 0 :(得分:5)
我想你想要这个:
([0-9._]+(RELEASE|SNAPSHOT)?)
(内部)parens形成一个组,问号表示该组可能出现0或1次。
答案 1 :(得分:1)
你做得很棒。您只需进行一些更改。
首先,您不使用||
或使用|
。因此RELEASE||SNAPSHOT
会转换为RELEASE|SNAPSHOT
。由于发布或快照不是强制性的,因此应在其后放置?
。所以最终的正则表达式变成
([0-9\._]+(RELEASE|SNAPSHOT)?)
您也可以使用\d
代替0-9
。
除此之外,当.
位于\
内时,[]
无需转义([\d._]+(RELEASE|SNAPSHOT)?)
所以最后,以下可能是最终的正则表达式
{{1}}