const regex = /(?<=^[\t ]*|[\n;](?:[\t ]*(?:\w+ )?)?)export(?:(?: *(?<type>type) *)|[\t\n ]*)(?<exports>(?:\*(?: +as +\S+)?)|\S+|(?:{[\w\t\n\r "$'*,./-]+?}))[\t ]*from[\t ]*["']\s*(?<specifier>(?:(?<=' *)[^']*[^\s'](?= *'))|(?:(?<=" *)[^"]*[^\s"](?= *"))) *["']/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?<=^[\\t ]*|[\\n;](?:[\\t ]*(?:\\w+ )?)?)export(?:(?: *(?<type>type) *)|[\\t\\n ]*)(?<exports>(?:\\*(?: +as +\\S+)?)|\\S+|(?:{[\\w\\t\\n\\r "$\'*,.\/-]+?}))[\\t ]*from[\\t ]*["\']\\s*(?<specifier>(?:(?<=\' *)[^\']*[^\\s\'](?= *\'))|(?:(?<=" *)[^"]*[^\\s"](?= *"))) *["\']', 'g')
const str = `export { default } from './make'
export {
DEFAULTS,
plugin as default,
type Options
} from './plugin'
export type { Config, Result } from './interfaces'
export type { default as Options } from './options'
export type Foo from '#foo'
export type * from "./spaceship"
export type * as vehicles from "./spaceship"
export * as constants from './constants'
export * from './interfaces'
export * from './lib'
export * from './types'
export * from "module-name";
export * as name1 from "module-name";var g;export{name1}from"module-name";
export { name1, /* */ nameN } from "module-name";
export { import1 as name1, import2 as name2, /* */ nameN } from "module-name";
export { default, /* */ } from "module-name";
declare module 'module-name' {
export { default } from './make'
export {
DEFAULTS,
plugin as default,
type Options
} from './plugin'
}
export {
DEFAULTS,
plugin as default,
type Options
}
export { defineBuildConfig, type BuildConfig } from "#src"
export type {
JsonObject,
LiteralUnion,
Nullable
} from '@flex-development/tutils'
export {
addFive,
addFour,
addThree,
addTwo,
squareFive,
squareFour,
squareThree,
squareTwo
} from './lib'
export * as constants from "./constants"
export type { default as Options }
export type { default as Options } from "./options"
export * from './utils'
export interface User {}
export abstract class House {}
export const { name1, name2: bar } = o;
export const [ name1, name2 ] = array;
export default async function foo() {}
export default foo
export default 1 + 1;
export type { Config, Result }
"export type { default as Statement }"
export { name1, /* */ nameN };
export { variable1 as name1, variable2 as name2, /* */ nameN };
export { variable1 as "string name" };
export { name1 as default /*, */ };
export type { CompilerOptionsJson as default };
export { default }
export {
DEFAULTS,
plugin as default,
type Options
}
export type { Config, Result }
export type { default as Options }
var g;export{name1}; export{name1}
export { name1, /* */ nameN }
export { import1 as ", import2 as name2, /* */ nameN }
export { default, /* */ }
// export * from './constants'
// export type { default as Statement }
/**
*
* @example
* export { default }
* export { Config, Result }
* export type { default as Options }
*/
// export * from './constants'
//export type { default as Statement } from './statement'
/* export type { default as Statement } from './statement' */
/*export type { default as Statement } from './statement' */
/*
* @example
* export * from './constants'
*/
/**
* @example
* export * from './constants'
*/
/**
*
* @example
* export { default } from './make'
* export { Config, Result } from './interfaces'
* export type { default as Options } from './options'
*/
export type { Config, Result } from './interfaces'`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions