2013-08-24 38 views
0

我想解析來自IMDB top 250列表(來自頁面源)的電影名稱,這是充滿html標籤。 我有一個正則表達式,但是當我使用grep命令運行它時,經過一段時間後它會給核心傾倒。命令如下: grep -o -P ">[[A-Z]+\w* ([a-zA-Z]+\w* ?)*<" film.xml。 這個核心傾倒的原因是什麼?正則表達式給核心轉儲

+3

你犧牲品[災難性的回溯(http://www.regular-expressions.info/ catastrophic.html)。 –

+0

是的,:'[a-zA-Z] + \ w *'部分就像是:'a + a *' - [一個正則表達式不是否定的](http://www.regular-expressions.info/catastrophic的.html) – ridgerunner

回答

2

我不明白到底是什麼你正在嘗試做的,但嘗試:

grep -o -P ">[A-Z]\w*([a-zA-Z]\w*)* ?<" film.xml 
1

你的正則表達式太貪婪了。這通常發生在組內使用*時,該組本身具有*。減少*+或使用它們的非貪婪表格:*?+?,這將有很大的幫助。