我正在尝试解析一些 js 文件(ExtJS)并找到该文件中类使用的所有依赖项。
示例 js 文件如下所示:
Ext.define('Pandora.controller.Station', {
extend: 'Ext.app.Controller',
refs: [{
ref: 'stationsList',
selector: 'stationslist'
}],
stores: ['Stations', 'RecentSongs'],
...
我想要得到的是Ext.app.Controller
.
使用我的代码,我可以获得所有包含extend
public void ReadAndFilter(string path)
{
using (var reader = new StreamReader(path))
{
string line;
while ((line = reader.ReadLine()) != null)
{
if (line.Contains("extend"))
{
listBox2.Items.Add(line);
}
}
}
}
但这也会返回评论和其他不必要的东西。我的想法是使用 RegEx 查找所有字符串。
我的问题是,有时行在扩展前后有一些空格。
以下是一些可以在 js 文件中找到的示例:
extend : 'Ext.AbstractPlugin', extend: 'Ext.util.Observable', @extends Sch.feature.AbstractTimeSpan extend : "Sch.feature.AbstractTimeSpan", extend : "Sch.plugin.Lines", extend : "Sch.util.DragTracker",
在此运行 RegEx 应该返回:
Ext.AbstractPlugin
Ext.util.Observable
Sch.feature.AbstractTimeSpan
Sch.plugin.Lines
Sch.util.DragTracker
这是我的尝试:extend[ ]*:[ ]*['"][a-zA-Z.]*['"]
,我在这里测试过,但我只想得到引号或双引号之间的部分(这也可以验证吗?这样我们就可以排除带有第一个引号和第二个双引号的那些)。
RegEx 可能不是最快的,但我不知道我还能如何做到这一点。
欢迎任何建议。