ST3 正则表达式查找未被其他字符包围的数字序列

ST3 regex to find number sequences not surrounded by other characters

请原谅可能出现的问题,因为我对制定自己的正则表达式还很陌生,而且我想出的任何东西都是在过去一个小时内完成的。

我在 Sublime Text 3 中处理了一个巨大的文本文件。我试图在 ST 的搜索和替换功能中使用正则表达式来识别所有 2-4 位数字序列 没有被任何其他字符包围

这将识别以下序列:

01
330
0302

并忽略以下内容:

1
10405
3042-2
(3030
x5590

在我的文档的上下文中,没有被任何其他字符包围的序列本质上意味着存在于它自己的行中。

所以换句话说,如果一个 2-4 位的序列存在于它自己的行中,则需要对其进行识别。如果不是,或者如果它是 <2 或 >5 位数,则需要单独保留它。

到目前为止我能想到的最好的是:

\b\n[0-9]{2,4}\n\b

...这对识别这些序列非常有效,但实际上似乎不允许我替换已识别的区域:单击“替换”或按快捷键 Ctrl+Shift+H 似乎只突出显示序列然后继续。如果这个我正在使用的正则表达式的问题,我还能使用什么?

我不太清楚你在问什么,但如果你想单独匹配一行中的 2-4 个数字,应该这样做

^[0-9]{2,4}$

^匹配行首,$匹配行尾

如果你想允许前导或尾随空格,你可以这样做

^[ ]*[0-9]{2,4}[ ]*$

您想用什么替换文本?如果说你想删除匹配的文本和整行,你可以这样做

^[0-9]{2,4}$\n

这匹配整行,包括换行符。

或者,您可以捕获带括号的匹配文本

^([0-9]{2,4})$

并像这样进行替换

foobar

$1 是 (...) 中的任何内容。这会给你

foo01bar
foo330bar
foo0302bar

And ignore the following:

1
10405
3042-2
(3030
x5590