2015-05-25 25 views
4

所以我從一個JavaScript文件中讀取一個字符串,將有:未註釋的正則表達式匹配線

... 
require('some/path/to/file.less'); 
... 
// require('some/path/to/file.less'); 
... 

我使用這個REG-EX:

requireRegExp = /require(\ +)?\((\ +)?['"](.+)?['"](\ +)?\)\;?/g 

爲了趕上所有這些線。但是,我需要篩選出那些被評論的人。

所以,當我運行

while(match = requireRegExp.exec(str)){ 
... 
} 

我只會如果你想只匹配那些require使用下面得到的匹配與需要啓動註釋掉線...

+0

'STR = str.replace(/ \/\/[^ \ r \ n]的* /克, '');' – Deadooshka

+0

不知道這是你需要的,但'regequireRegExp =/^ require。+/g'爲我工作。 – Alex

回答

5

regequireRegExp = /^\s*require\('([^']+)'\);/gm

說明:在一行的開始

\s*檢查空格字符,0

^斷言位置......很多次

require相匹配的單詞需要

\(匹配字符(

'匹配的字符'

([^']+)匹配任何一個心不是1 ' ...多次

量詞:根據需要+之間一個和無限次,多次地,用之於

'字符'字面上

\)匹配字符匹配全球:字面上

;字符;字面上

g修改相匹配。所有匹配(不匹配第一次匹配)

m修飾符:多行。原因^$相匹配的開始/每行的端部(未纔開始串/結束)

編輯

顯然,你希望得到一個組中的路徑,所以我編輯我的回答能夠更好地回答你的問題。

這裏是例如:

https://regex101.com/r/kQ0lY8/3

+0

謝謝@亞歷克斯,但如果該行是ideles? –

+0

我會接受你的答案,看到Amal的解決方案的第一部分似乎沒有效果...我請你用我的完整正則表達式編輯,爲可能的白色空間添加帳戶,以確保該行的開始。 /^(\ s +)?require(\ +)?\((+)?['「](。+)?['」](\ +)?\)\;?/ gm –

+0

@AndréAlçadaPadezThere你走! :) – Alex

2

/^\s*require.*/gm 

DEMO

+0

請解釋downvotes?這樣我可以改進答案? –

+0

「*正則表達式不匹配,如果線條評論*」 - 如果評論,OP想要不匹配該行。這是相反的。 –

+0

哦..多數民衆贊成在多數民衆贊成在沒有問題..看到更新:) –