[英]Java Regex to match a specific string or another specific string, or not at all?
想象一下使用正则表达式捕获输入:
2.1_3_4
3.2.1
3.2.1.RELEASE
3.2.1.SNAPSHOT
数字和点很容易获得
([0-9\._]+)
但是,您如何捕获该信息以及“ RELEASE”或“ SNAPHOT”,或者全都不捕获?
我玩了or运算符无济于事...
([0-9\._]+RELEASE||SNAPSHOT) // no worky
顺便说一句,这是一个不错的正则表达式测试器: http : //java-regex-tester.appspot.com/
我想你想要这个:
([0-9._]+(RELEASE|SNAPSHOT)?)
(内部)括号组成一个组,问号指示该组可能出现0或1次。
你做的很棒。 您只需要进行一些更改。
首先,您不使用||
为或|
用来。 因此, RELEASE||SNAPSHOT
将转换为RELEASE|SNAPSHOT
。
由于版本或快照不是强制性的,因此请输入?
应该放在它后面。 所以最终的正则表达式变成
([0-9\._]+(RELEASE|SNAPSHOT)?)
您也可以使用\\d
而不是0-9
。 除此之外,没有必要逃脱.
由\\
当其存在于[]
所以最后,以下可能是最终的正则表达式
([\d._]+(RELEASE|SNAPSHOT)?)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.