2017-02-11 34 views
0

原谅可能的问题,因为我对制定自己的正则表达式以及我提出的任何事情都相当陌生,过去一小时我就这么做了。ST3正则表达式找到没有被其他字符包围的数字序列

我有我与崇高的文本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似乎只突出序列,然后继续前进。如果这与我正在使用的正则表达式的问题,我还能使用什么?

回答

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 
+0

我想你可能会略微误解我在我的例子中所要求的,但没关系;这个答案是完美的。第一个正则表达式正好回答了我所要求的,第二个与'\ n'更进一步,为我节省了删除第一个解决方案和我自己的空白行的额外步骤。非常感谢。 – Hashim

相关问题