用正则表达式查找幻数

时间:2012-07-31 00:28:29

标签: regex lua syntax-highlighting magic-numbers

我正在使用语法高亮控件,我必须使用Regex指定所有突出显示的内容。我已经完成了其他所有内容(关键字,函数,字符串,注释等),但我无法为魔术数字提出一个好的规则。如果有帮助的话,我将它用于Lua文本编辑器。

我目前正在使用\d+来检测数字,但问题是我最终会遇到这样的事情:

enter image description here

正如您所看到的,我的变量名也会突出显示部分内容。

是否有人知道如何使此特定规则正常工作?

2 个答案:

答案 0 :(得分:3)

您不希望它在名称中匹配,因此请添加字边界:\b\d+\b

对于花车,可能有一个小部分:\b\d+(?:\.\d+)?\b

对于花车,也可能有一个指数:\b\d+(?:\.\d+)?(?:[Ee][+\-]?\d+)\b

答案 1 :(得分:2)

我会说在正则表达式时保持简单(即只写你需要的东西,而不是更多)。以下内容将第2组与正在分配的浮点数和整数匹配:

(=\s*)([\d|\.]+)(\s*;)
  • 第1组:上下文在'='符号后开始,占任何额外的 空格(\ s *)。
  • 第2组:将匹配1位或更多位数 (\ d)或句号(。)。
  • 第3组:上下文以';'结尾, 在它之前占用任何额外的空白区域(\ s *)。

希望有所帮助。