0

以下正则表达式比较耗时过长(> 2 分钟)。

re.search('^(\S+){2,50}/(\S+){2,50}\-trailing/$', 'test-request/this-is-crashing/')

删除长度限制 ({2-50}),解决了这个问题。

模式中的错误是什么?

环境:Ubuntu i5 4GB Python 2.7.3

4

2 回答 2

8
(\S+){2,50}

你确定你需要这个吗?\S+表示出现一次或多次。然后你想要它出现 2-50 次?

为什么不:

\S{2,50}
于 2012-11-21T11:49:40.923 回答
0

为什么不让它更简单...

re.match('([^/]+)/([^/]+)-trailing/', 'test-request/this-is-crashing/')

虽然在这种情况下它没有找到任何东西......

我想您只想捕获与此类似的字符串:

'<SOME-TEXT>/<SOME-TEXT>-trailing/'

于 2012-11-21T12:00:47.810 回答