【发布时间】:2012-04-03 10:51:58
【问题描述】:
我想突出显示 VIM 中的所有数字(不是单个数字!):
- 所有数字(文档中的任何位置)带/不带“.”或“,”
- 所有负值的数字(文档中的任何位置)
p.e.
8.20
8,500
-2.40
28.000.000
1000,2 etc
“。”如果在数字内,则必须在突出显示中包含“,”。
1 或 1。--> 必须仅突出显示“1”
此外,必须突出显示负数(包括“-”),但当“-”之前有另一个数字时,则不需要。
p.e. -5-6-7-8-9-10
必须突出显示 -5,6,7,8,9,10
一个负数必须被视为一个负数,而不是一个负数和正数 p.e。 “-5”必须突出显示为“-5”而不是“-5”和“5” 原因是我复制了所有匹配项,不想找到两个只有数字(“-5”)的匹配项
“--5”必须突出显示为正值“5”
我已经创建了这个正则表达式:
\%(\d\)\@<![-]*\d\{1,}\([.,]\d\+\)*
但它会两次突出显示负数(作为负数和不带“-”的数字)
【问题讨论】:
-
用
[-]代替-没有任何价值。无论哪种方式,它都是一个原子。至于后面的*,您是否希望突出显示---1? -
克里斯,在上面的例子中 -5-6-7-8-9-10 它必须高亮 -5,6,7,8,9,10 但不是 6,7 之前的点,8,9,10。 “---1”没有突出显示为负值,而是突出显示为“1”。
-
那么
[-]*应该是-\?。 -
-?--> 找不到模式。而-\?--> 在--\d中突出显示一个-