【问题标题】:Search all numbers搜索所有号码
【发布时间】: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 中突出显示一个-

标签: regex search vim numbers


【解决方案1】:

\%([0-9-]\@&lt;!-\)\?\d[0-9,.]*

非常奇怪的要求,我认为这就是您提到的所有内容,但不确定您的“--5”规定 - 这是否意味着您希望偶数个“-”字符不匹配?这不会那样做。

编辑:更新为不允许数字前有多个 - 字符。不确定这是否真的是您想要的 - 以 ---5 为例。

【讨论】:

  • 正如您所指出的,它确实选择了数字前的所有“-”。不完全是我想要的。
  • 那么你到底想要什么?偶数'-'不匹配?只有 2 个?
  • 请看我的第一条消息。一个数字前多一个“-”是一个正数。只有当数字前有一个“-”且“-”前没有数字时,数字才是负数。 (我希望我现在说清楚了:))
  • 谢谢汤姆。你知道如果\a-(“-”之前的一个字母)也会使它成为一个正数,那么正则表达式是什么?
  • 找到了 :-) 非常感谢您的正则表达式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2013-01-31
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多