我需要在大文档中找到特定的长度数字。我尝试为此使用正则表达式。例如,如果我需要搜索正好 2 位数字的数字,我会使用\d\d
(即 /d 两次,后跟一个空格)。这效果很好。
但要查找 10 位数字,输入\d
10 次实际上是不可行的。
试过了\d{2}
,说'E486: 未找到模式: \d{2}'
有没有更快/更简单的方法来实现这一目标?
答案1
有不同的正则表达式方言;有些(例如 Perl 的)不需要反斜杠量化修饰符( \d{2}
),有些(例如 sed)需要两个 ( \d\{2\}
),而在 Vim 中,只有开头花句需要它 ( \d\{2}
)。这就是正则表达式方言不兼容的可悲状态。
另请注意,为了匹配精确的数字,您必须锚定匹配,以便\d\{2}
不会与12
中的数字 ( )匹配123
。这可以通过以下方式完成消极向后看和展望:
\d\@<!\d\{2}\d\@!
答案2
答案3
转义括号的工作原理:\d\{2\}
答案4
搜索固定长度的数字例如 5
/\d\{5\}
匹配 12345, 123456
由于超过5位的数字包含5位的子串,因此也会被找到。
字边界开始
\<
字边界结束
\>
然后使用下面的方法来搜索精确的 5 位数字
/\<\d\{5\}\>
匹配 12345 但不匹配 123456
使用以下搜索 5 位或更多位的数字。
/\<\d\{5,\}\>
使用以下搜索 5 至 8 位数字。
/\<\d\{5,8\}\>
使用以下命令搜索 8 位或更少的数字。
/\<\d\{,8\}\>
1 位或多位数字的快捷号码
/\d\+