我有一个正则表达式如下:
(?!\.)(\d+(\.\d+)+)(?![\d\.])$
它将字符串视为:1.0.0
(软件版本)。
我如何编辑它以便有效以及以下字符串?
1.0.0-SNAPSHOT
1.0.0.RC
1.0.0-RELEASE
字母数字字符串可以跟随版本号,但仅限于.
或-
(只有一个)。
答案 0 :(得分:4)
为.[A-Z]+
或-[A-Z]+
部分添加非捕获组,并将其设为可选。
(?!\.)(\d+(\.\d+)+)(?:[-.][A-Z]+)?(?![\d.])$
如果要捕获字符串部分(以点或连字符开头的大写字母),请将非捕获组设为捕获组。
(?!\.)(\d+(\.\d+)+)([-.][A-Z]+)?(?![\d.])$
仅将字母捕获并敲击到单独的组中。
(?!\.)(\d+(\.\d+)+)(?:[-.]([A-Z]+))?(?![\d.])$
答案 1 :(得分:1)
答案 2 :(得分:0)
^\d+\.\d+\.\d+[\.\-]?[A-Z]*$
for java replace" \"到" \\"
答案 3 :(得分:0)
万一有人需要捕获语义版本的每个组件,这个正则表达式将有助于实现这一目标:
^(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:[-.]([A-Z]+))?(?![\d.])$
主要 将在第1组中捕获,第2组 次要 ,增量 和第4组中的 限定符 。