find最后一个导入语句的索引

我正在使用Node的fs.readFileSync(file)读取fs.readFileSync(file) 。 我需要find最后一次导入语句的索引。

我正在阅读的js文件将如下所示:

 import React from 'react'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { mount } from 'react-mounter'; import { AppLayout } from '../../ui/layouts/AppLayout'; import HomePage from '../../ui/pages/HomePage'; FlowRouter.route('/', { name: 'home', action() { mount(AppLayout, { content: (<HomePage />) }); } }); 

所以在这种情况下,我需要find这个导入语句的分号索引: import HomePage from '../../ui/pages/HomePage'; 因为这是最后一个。

我已经看了str.lastIndexOf(searchValue[, fromIndex])但它需要一个string作为searchValue ,在这种情况下,我需要传入一个正则expression式。

似乎我需要一个正则expression式,将相反的方向查找。

我如何匹配并得到最后一次导入的索引?

我想你想find的是最后一行以import开始,并在其后插入另一行。 有几种方法。

Splice& indexOf

 // splice code from http://stackoverflow.com/a/4314050/3832970 String.prototype.splice = function(idx, rem, str) { return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem)); }; var input = "import React from 'react';\nimport { FlowRouter } from 'meteor/kadira:flow-router';\nimport { mount } from 'react-mounter';\nimport { AppLayout } from '../../ui/layouts/AppLayout';\nimport HomePage from '../../ui/pages/HomePage';\n\nFlowRouter.route('/', {\n name: 'home',\n action() {\n mount(AppLayout, {\n content: (<HomePage />)\n });\n }\n});"; var strt = input.lastIndexOf("\nimport "); strt = input.indexOf("\n", strt+1); document.body.innerHTML = "<pre>" + input.splice(strt+1, 0, "import Example from \'../../example\';\n") + "</pre>";