gpt4 book ai didi

javascript - 如何确保正则表达式不匹配空字符串?

转载 作者:行者123 更新时间:2023-11-28 02:56:42 24 4
gpt4 key购买 nike

我正在使用Jison Javascript 的解析器生成器,我的语言规范有问题。

我正在编写的程序将是一个可以处理英尺、英寸和十六分之一的计算器。为了做到这一点,我有以下规范:

%%
([0-9]+\s*"'")?\s*([0-9]+\s*"\"")?\s*([0-9]+\s*"s")? {return 'FIS';}
[0-9]+("."[0-9]+)?\b {return 'NUMBER';}
\s+ {/* skip whitespace */}
"*" {return '*';}
"/" {return '/';}
"-" {return '-';}
"+" {return '+';}
"(" {return '(';}
")" {return ')';}
<<EOF>> {return 'EOF';}

这些行中的大部分来自基本计算器规范。我只是添加了第一行。

正则表达式正确匹配英尺、英寸、十六分之一,例如 6'4"(六英尺 4 英寸)或 4"5s(4 英寸,十五分之五) ) 数字和指示符之间有任何类型的空格。

问题是正则表达式匹配空字符串。结果,词法分析总是在行首记录一个FIS,然后解析失败。

这是我的问题:有没有办法修改这个正则表达式以保证它只匹配非零长度的字符串?

编辑尽管正则表达式中有捕获组,但我不需要捕获这些组。我知道我可以使用非捕获组,但没有 (?:...) 会更清晰一些。

最佳答案

您可以在正则表达式的开头添加 (?=.)

关于javascript - 如何确保正则表达式不匹配空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2430435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com