正则表达式在Notepad ++中反转搜索

时间:2015-07-30 06:49:18

标签: regex notepad++ regular-language

我有一个字符串

2012-02-19 00:11:12,128|DEBUG|Thread-1|@@@ Time taken is 18 ms 

在regex下面,我可以搜索18 ms

\d\d\s[m][s]

我想要做的是在Notepad ++中搜索18 ms之前的字符串,然后将其删除。因此,在我拥有的数千行中,我可以提取时间。

另外,我需要上面提到的正则表达式来处理3位数和2位数的时序。例如,它应该能够搜索18 ms以及999 ms

请帮忙。

3 个答案:

答案 0 :(得分:2)

你可以把正则表达式放在积极的前瞻中:

^.*(?=\d{2,3}\sms\s*$)

如果您在18 ms之后有一些文字,则需要使用word boundary \b

  

\b允许您仅执行"整个单词"使用\bword\b

形式的正则表达式进行搜索
^.*(?=\d{2,3}\sms\b)

请参阅demo

{2,3}是一个limiting quantifier,可让您匹配前面的子模式中的2个或3个。

  

还有一个额外的量词,可以指定令牌重复的次数。语法为{min,max},其中min为零或表示最小匹配数的正整数,max是等于或大于min的整数,表示最大匹配数。如果逗号存在但省略max,则最大匹配数为无限。

您可以使用空字符串替换,18 ms将保留在该行上。

注意您可以使用\d+来匹配一个或多个数字(不限制数字编号)。

注意2 :如果您的号码是第一个,您需要使用延迟匹配,即使用.*?代替{{1在模式的开头。

答案 1 :(得分:1)

  

另外,我需要上面提到的正则表达式来处理3位数和2位数的时序。

.*

使用上面的正则表达式,然后用空字符串替换匹配。

答案 2 :(得分:1)

您可以使用capturing group

查找

^.*(\d{2,}\s[m][s])$

替换为:

\1