帮助正则表达式查找数字

Rem*_*man 4 regex vim numbers

我试图找到所有单个数字(使用vim):

  • 行开头的数字
  • 行尾的数字
  • 必须遵循该数字并由非数字进行处理
  • 但不得使用"点"和数字或","和数字来表示或采用.

这是正确的
7
word7
7word
7.
0.7
一,7
word7word
字7字
7-7

但不是
7.7
7,7
77

任何人都可以帮我解释正则表达式吗?

编辑:
可能我已经在下面关于原子分组的答案的帮助下找到了它.Vim确实支持它: \(\d\.\|\d\,\|\d\)\@<!\d\(\.\d\|\,\d\|\d\)\@!

Ben*_*oit 5

你可以试试这个:

\v%(\d+%(\.|,))@<!\d@<!\d+@>%(%(\.|,)\d)@!
Run Code Online (Sandbox Code Playgroud)

说明:

  • \v 变得非常神奇:不需要很多反斜杠
  • %标志是可选的(使组括号不匹配)
  • (\d+(\.|,)@<!:之前没有数字.要么 ,
  • \d@<! :前面没有数字(请确保我们位于第一位数字
  • \ d + @>:消耗所有数字(@>确保,见:help /\@>)
  • ((\.|,)\d)@! :之后,没有点或逗号后跟一个数字.