我有一个正则表达式,例如^([1-9]\\d*)([dDmMwWyY])$
匹配如1d,10d,2W,100Y等。
现在我希望将0d,0D与上面但不是0w,0y,0m匹配。
那我应该如何编写正则表达式?
如果我写^([0-9]\\d*)([dDmMwWyY])$
这将匹配0w,这不是我想要的
我想要macher.group(1)中的数字和group(2)中的数字
答案 0 :(得分:0)
如果我理解得很好,那就是:
^([0-9]+[dD]|[1-9]\d*[mMwWyY])$
这将匹配以d或D为后缀的任何数字,并且只有以' 1'开头的数字匹配。剩下的。您也可以写这个并使用(?i)
,Pattern.IGNORE_CASE
作为选项:
^([0-9]+d|[1-9]\d*[mwy])$
如果你想要匹配(0)和匹配(1),如评论中所述:
^([0-9]+(?=[dD])|[1-9]\d*)([dmwyDMWY])$
正向前瞻断言仅适用于预期的d / D,因此它可以捕捉0d
而不是0y
。
答案 1 :(得分:0)
为什么不只是
^(0d)$|^([1-9]\\d*)([dDmMwWyY])$
它毫不含糊。你想要0d,或者剩下的工作时间。