GREP - 正则表达式+(加号)与*(星级)表现

时间:2012-05-20 02:19:48

标签: regex performance grep

简单的问题,说我有两个正则表达式

rtmp.*?\b/
rtmp.+?\b/

如果在我做过的测试中,似乎可以忽略不计。

我理解两个表达式之间的技术差异。就我而言,要么会这样做。正如问题所述,我只是询问性能差异,如果有的话。我注意到的一个区别是+需要egrep

 grep 'rtmp.*?\b/'
egrep 'rtmp.+?\b/'

2 个答案:

答案 0 :(得分:9)

这两个表达式:

rtmp.*?\b/
rtmp.+?\b/

匹配不同的东西。 *表示“前一个表达式的零个或多个”(即任何数字),+表示“前一个表达式中的一个或多个”。因此.*?匹配非贪婪模式中任意数量的任何字符,.+?匹配非贪婪模式中任何正数字符。

速度差异并不重要,请使用符合您意图的表达式。

答案 1 :(得分:2)

选择更适合您需求的产品; 性能差异可以忽略不计。

*星号表示前面的元素中有零个或多个 +加号表示前面有一个或多个元素。