Я пытаюсь разобрать некоторые js-файлы (ExtJS) и найти все зависимости, которые используются классом в этом файле.Анализ текстового файла с регулярным выражением
Sample файл выглядит расслоение плотной, как так:
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.]*['"]
, я тестировался это here, но я хочу только получить часть между кавычками или двойными кавычками (можно ли это также проверить? Чтобы мы могли исключить те, у кого есть первая цитата и вторая двойная кавычка).
RegEx не может быть быстрее, но я не знаю, как еще я мог это сделать.
Любые советы приветствуются.
Thans такой быстрый ответ. Могу ли я добавить название группы в это регулярное выражение и убедиться, что оно начинается и заканчивается квотами или doubleqoutas, как в ответе @ Армана? – Misiu
@ Misiu Конечно, отредактировал мой ответ для этой цели. – Jerry
Спасибо Джерри :) Еще одна вещь. Сейчас я сканирую файл по строкам. Могу ли я использовать один и тот же RegEx для одновременного сканирования всего файла? Вероятно, это сэкономит некоторое время. – Misiu