使用regexp javascript从源文件中查找所有导入的文件名

时间:2016-05-22 18:23:11

标签: javascript regex node.js

我是regex和javascript的新手 我正在尝试使用正则表达式创建源文件的所有导入文件的数组 在导入声明之前,还会有一个“@”符号。例如:

如果文件看起来像

  

...
@import file1,file2,file3;
int i = 6;
@import file4;
...

然后我需要一个带有[file1,file2,file3,file4]

的数组

到目前为止,我试图创建reg exp本身但没有成功 对此有何帮助?
谢谢 编辑以使事情更清晰

2 个答案:

答案 0 :(得分:0)

您可以String.prototype.split()使用RegExp /@import|,|;|\s/Array.prototype.filter()使用参数Boolean

text.split(/@import|,|;|\s/).filter(Boolean)

plnkr http://plnkr.co/edit/OpLBFMehRjC1sm1GA9BL?p=preview

答案 1 :(得分:0)

您的问题的复杂解决方案(+演示):



function run() {
  
  var 
    re = /(?:@import)\s+([^;]+)/igm,
    str = document.getElementById('demo').value,
    arr = [];

  while (result = re.exec(str)) {

    arr = arr.concat(result[1].split(/[,\s]+/))
  }

  //console.log(arr);
  
  document.getElementById('result').innerHTML = JSON.stringify(arr);
}

<p>
  <textarea id="demo" cols="50" rows="15">

  // .....
  
  @import file1,file2, file3; 
  
  int i=6;
    
  @import file4;
  
  // .....
  </textarea>
</p>
<p>
  <span id="result" style="color:green;"></span>
</p>
<p>
  <input type="button" value="RUN" onclick="run()">
</p>
&#13;
&#13;
&#13;

运行我的演示,查看结果。