使用正则表达式查找魔法数字

我正在使用语法高亮控件,并且必须使用 Regex 指定所有高亮内容。我已经完成了其他所有内容(关键字、函数、字符串、注释等),但我想不出一个好的解决方法来规定魔法数字的规则。如果能的话,我将为 Lua 文本编辑器使用它。

我目前正在使用 \d+ 检测数字,但问题是最终结果会像这样:

enter image description here

你可以看到,我的变量名称也被高亮了一部分。

有人知道如何使这个特定规则正常工作吗?

点赞
用户688213
用户688213

你不想在名称内进行匹配,所以加入单词边界:\b\d+\b

对于浮点数,可能存在小数部分:\b\d+(?:\.\d+)?\b

对于浮点数,也可能存在指数:\b\d+(?:\.\d+)?(?:[Ee][+\-]?\d+)\b

2012-07-31 00:36:13
用户1535248
用户1535248

我认为在正则表达式方面保持简单(即只写所需内容,而不是多余的东西)。下面的代码将匹配被分配给组2的浮点数和整数:

(=\s*)([\d|\.]+)(\s*;)
  • Group 1:上下文在 "=" 符号之后开始,考虑到任何额外的空格(\\s\*)。
  • Group 2:将与一个或多个数字(\\d)或句点(.)相匹配。
  • Group 3:上下文以";"结束,考虑到它之前的任何额外空格(\\s\*)。

希望这对你有帮助。

2012-07-31 03:50:56