Javacc 中 0 到 180 之间的数字和小数位的正则表达式
Regex for numbers between 0 and 180 and decimals places in Javacc
所以我在 JavaCC 中使用正则表达式创建了一个令牌。
我试图只允许 3
位数字并且只在 0 - 180
.
之间
此外,我试图只允许(在单独的标记中)0
和 59.9999
(小数点后 4 位)之间的 2 位数字。
我不知道如何在 JavaCC 中为这两个标记创建正则表达式...
如果有任何帮助和解释就太棒了,谢谢 :)
对于第一种情况,你的模式需要允许1位数字、2位数字、3位数字,其第一位是1,第二位在0-7范围内,以及特殊情况180. 正则表达式看起来像
[0-9]{1,2}|1[0-7][0-9]|180
(我不知道 javacc,所以我不知道如何使用这个正则表达式,或者你是否需要其他东西来防止像 1800
这样的东西被解析为数字,或者两个数字。您可能需要在末尾加上 \b
来指示单词边界,但我不知道 javacc 是如何工作的。)
对于第二种情况,小数点左边的部分要么是一位,要么是两位,其中第一位在0-5范围内。您的要求不清楚,但如果令牌需要有小数点和小数点右边一到四位数字,则正则表达式为
([0-9]|[0-5][0-9])\.[0-9]{1,4}
同样,我不知道javacc如何处理单词边界。
请注意,如果这是一个 Java 程序,我建议(在第一种情况下)将其解析为整数并将其与 0 和 180 进行比较。太多提问者尝试使用正则表达式来解决每个问题,但它们并不适合所有问题。由于这是针对 javacc 的,它可能是正则表达式易于使用而数字比较不是的上下文——正如我所提到的,我对 javacc 一无所知。
所以我在 JavaCC 中使用正则表达式创建了一个令牌。
我试图只允许 3
位数字并且只在 0 - 180
.
此外,我试图只允许(在单独的标记中)0
和 59.9999
(小数点后 4 位)之间的 2 位数字。
我不知道如何在 JavaCC 中为这两个标记创建正则表达式...
如果有任何帮助和解释就太棒了,谢谢 :)
对于第一种情况,你的模式需要允许1位数字、2位数字、3位数字,其第一位是1,第二位在0-7范围内,以及特殊情况180. 正则表达式看起来像
[0-9]{1,2}|1[0-7][0-9]|180
(我不知道 javacc,所以我不知道如何使用这个正则表达式,或者你是否需要其他东西来防止像 1800
这样的东西被解析为数字,或者两个数字。您可能需要在末尾加上 \b
来指示单词边界,但我不知道 javacc 是如何工作的。)
对于第二种情况,小数点左边的部分要么是一位,要么是两位,其中第一位在0-5范围内。您的要求不清楚,但如果令牌需要有小数点和小数点右边一到四位数字,则正则表达式为
([0-9]|[0-5][0-9])\.[0-9]{1,4}
同样,我不知道javacc如何处理单词边界。
请注意,如果这是一个 Java 程序,我建议(在第一种情况下)将其解析为整数并将其与 0 和 180 进行比较。太多提问者尝试使用正则表达式来解决每个问题,但它们并不适合所有问题。由于这是针对 javacc 的,它可能是正则表达式易于使用而数字比较不是的上下文——正如我所提到的,我对 javacc 一无所知。