```dataviewjs const files = app.vault.getFiles() .filter(file => file.path.includes("Thèse/Lectures/@") && file.extension === "md" ); const rows = []; for (const file of files) { const content = await app.vault.cachedRead(file); // Extract frontmatter block const match = content.match(/^---\n([\s\S]*?)\n---/); let fm = {}; if (match) { fm = obsidian.parseYaml(match[1]) ?? {}; } function getFields(content) { const fields = {}; const regex = /^\*\*(.+?)\*\*::[ \t]*([^\n\r]*)$/gm; let match; while ((match = regex.exec(content)) !== null) { fields[match[1]] = match[2].trim(); } return fields; } const fields = getFields(content) rows.push([ fields.Title ?? fm.title, fields.FirstAuthor, fields.Contribution, fields.Year, fields.Journal ?? "", fields.Citekey, dv.fileLink(file.path) ]); } dv.table( ["Title", "First Author", "Contrib.", "Year", "Journal", "CiteKey", "File"], rows ); ```