【发布时间】:2013-01-05 19:23:59
【问题描述】:
我正在尝试匹配 Qt 中的数字以进行语法突出显示,并且我正在尝试以下正则表达式:
"[^a-fA-F_][0-9]+" // For numbers.
"[^a-fA-F_][0-9]+\\.[0-9]+" // For decimal numbers.
"[^a-fA-F_][0-9]+\\.[0-9]+e[0-9a-fA-F]+" // For scientific notation.
"[^a-fA-F_]0[xX][0-9a-fA-F]+" // For hexadecimal numbers.
但文本匹配,例如 [1024,并且也突出显示 [。我只想突出显示 1024 部分。
另一个问题是,当我键入 aoe2 和键入 aoe25 时,正则表达式会突出显示。当数字前面有字母或下划线时,我不想突出显示它,因为那样它将是一个标识符。
我该如何解决?
【问题讨论】:
-
没有从字符串中解析数字的函数吗?我至少知道
strto{ul,d}(),但 Qt 可能还有更多? -
你能提供一些示例文本和你想要的匹配吗?例如,您要匹配这些字符串中的哪一个? “aoe2”、“aoe25”、“1024”、“[1024”
-
我想获取数字在字符串上的位置,而不是数字本身,因为这样 Qt 引擎会突出显示这些位置的字符。
-
不知道C++正则表达式是否支持,但是这里需要负前瞻。
-
我只想匹配 C 数字,例如:1024、4856、284.582、0x48e14、42.42e42 等。但是当这些数字在标识符中时,正则表达式不应该匹配,例如“aoe45” , 并且当它们前面有运算符时应该匹配(仅数字),例如“[1024]”或“+24”。