2015-05-25 27 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

哦..多数民众赞成在多数民众赞成在没有问题..看到更新:) –