正则表达式为0到180之间的数字和Javacc中的小数位数

时间:2015-03-09 02:40:19

标签: java regex javacc

所以我正在使用正则表达式在JavaCC中创建一个令牌。

我正在尝试仅允许3个数字,且仅在0 - 180之间。

此外,我尝试仅允许(在单独的标记中)059.9999 之间的2位数字(4位小数)。

我不知道如何在JavaCC中为这两个令牌创建正则表达式...

任何有关解释的帮助都会非常棒,谢谢:)

1 个答案:

答案 0 :(得分:1)

对于第一种情况,您的模式需要允许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一无所知。