原谅可能的问题,因为我在制定自己的正则表达方面相当新,以及我提出的任何事情,我在过去一小时内已经这样做了。
我有一个巨大的文本文件,我在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 似乎只是突出显示序列,然后继续前进。如果 我正在使用的正则表达式出现问题,我还能使用其他什么?
答案 0 :(得分:1)
我不太清楚你在问什么,但是如果你想在一条线上自己匹配2-4位数,那就应该这样做
^[0-9]{2,4}$
^匹配行的开头,$匹配结束
如果要允许前导或尾随空格,可以执行此操作
^[ ]*[0-9]{2,4}[ ]*$
您想用什么替换文字?如果您要删除匹配的文本和整行,则可以执行此操作
^[0-9]{2,4}$\n
这匹配整行,包括换行符。
或者,您可以使用括号
捕获匹配的文本^([0-9]{2,4})$
并像这样替换
foo$1bar
$ 1是(...)中的任何内容。这会给你
foo01bar
foo330bar
foo0302bar
And ignore the following:
1
10405
3042-2
(3030
x5590