2013-09-30 75 views
1

這是我之前的問題的延續:Parse text file with regex,但因爲我正在創建新表達式,所以我不想編輯該問題。使用正則表達式找到文件中的單詞

感謝傑裏我能找到比賽,但我需要變得更加複雜。

在ExtJS的類可以有需要和混入部分:

Ext.define('Ext.Window', { 
    extend: 'Ext.Panel', 
    requires: ['Ext.util.MixedCollection', 'Ext.util.BasicDrag'], 
    mixins: { 
     draggable: 'Ext.util.Draggable', 
     droppable : 'Ext.utils.Droppable' 
    } 
}); 

由於前一個問題,我能夠得到extend部分,但是從上面的例子我想獲得:

Ext.Panel 
Ext.util.MixedCollection 
Ext.util.BasicDrag 
Ext.util.Draggable 
Ext.utils.Droppable 

這一切都可以使用單一RegEx完成嗎?或者,也許3個不同的RegEx'es(一個由傑裏的回答)

需要部分可以看起來像這樣:

requires: 'Ext.util.MixedCollection' 

requires: ['Ext.util.MixedCollection', 'Ext.util.BasicDrag'], 

requires: [ 
       'Ext.util.MixedCollection', 
       'Ext.util.BasicDrag' 
       ], 

同樣用混入。
這背後想法是讓所有的依賴和構建定製精縮JS文件(我知道煎茶CMD工具)

我能夠得到單requires,但我不能讓多個元素相匹配。我開始正則表達式:http://regexr.com?36hto

回答

2

喜歡這個?

requires\s*:\s*(?:\[)?\s*(?:(?:'([^']+)')(?:,\s*)?)+\s*(?:\],?)?

http://regexr.com?36huj

編輯

requires\s*:\s*(?:\[)?\s*(?:(?:'(?<inside>[a-zA-Z.]*)')(?:,\s*)?)+\s*(?:\],?)?

這似乎是你想要的名爲匹配

+0

這看起來令人印象深刻:)但我怎麼能得到的只有比賽嗎?請參閱:http://stackoverflow.com/a/19102400/965722。我如何命名組只獲取需要的部分? – Misiu

+0

這是我的嘗試:http://regexr.com?36i1a你可以看看它,並檢查它是否正確? – Misiu

+0

這個表達式中匹配的位在中間是'([^'] +)'。您可以用您的語言特定匹配的東西替換它。 – stevemarvell