我知道这个(或类似的)被问过一百次 - 但我现在真的需要帮助:D 正则表达式应匹配的字符串。
注意:n
的范围为INTEGER_MIN - INTEGER_MAX
{number}
{number(1-n)}
{number(1-n,-n-n)}
{number(1-n,-n-n,0-n)}
如果模式匹配,则应该产生3个单独的捕获组,结果如此。 所有组都应该是可选的 - 因此,如果请求例如Java,则返回null。
1: 1-n
2: -n-n
3: 0-n
我尝试了什么:
\{number(?:\(([1-9])(?:(?:,)([0-9])){0,2}\))?\}
这显然不对,只包含2组(m.groupCount()
)
答案 0 :(得分:2)
好的,根据我的推断,我会这样做:
\{number(?:\((\-?\d+)(?:\,(\-?\d+))?(?:\,(\-?\d+))?\))?\}
然后对捕获的组执行操作以验证整数的范围,例如......
[伪代码因为我不知道你使用的语言]
captured integers = "capture1", "capture2", "capture3"
if{("capture1" < "capture2" && "capture1" > "capture3") ||
("capture1" > "capture2" && "capture1" < "capture3")} {
Do something
} else {
Do something else; like reject or throw error
}