using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<=^|[\n;](?:[\t ]*(?:\w+ )?)?)(?:(?:const\s*|let\s*|var\s*)?(?<imports>(?:[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*)|(?<=const\s*|let\s*|var\s*)(?:[\w\t\n\r ""$'*,./:{}-]+?))\s*=\s*)?(?:await\s+)?(?<expression>import\((?<specifier>[\S\t\n\r]+?)(?:,\s*(?<options>\{\s*assert:.+[\w\t\n\r ""':]+\}\s*\}))?\))";
string input = @"await import(foo)
await import('foo')
const foo = await import('bar')
const foo = await import(bar)
const promise = import('./foo');
const { readPackage } = await import('read-pkg')
const {
readPackageUp,
readPackageUpSync
} = await import('read-pkg');
const {
addFive,
addFour,
addThree,
addTwo,
squareFive,
squareFour,
squareThree,
squareTwo
} = await import('./lib')
await import('buzz').then(() => console.log(res)).catch(() => ({}))
var g;const{foo}=await import('bar');const{ foo }=await import('bar')
import('buzz').then(() => console.log(res)).catch(() => ({}))
import('buzz').then(() => console.log(res)).catch(() => ({}))
import('buzz').catch(() => ({}))
const foo = ""./utils.mjs""; await import(foo)
const { default: barData } =
await import('./bar.json');
const { default: barData } =
await import('./bar.json', { assert: { type: 'json' } });
(async () => {
if (somethingIsTrue) {
// import module for side effects
await import(""/modules/my-module.js"");
}
})();
await import('__tests__/report.json', {
assert: { type: 'json' }
})
await import('__tests__/report.json', {
assert: { type: 'json' }
})
(async () => {
if (somethingIsTrue) {
const {
default: myDefault,
foo,
bar,
} = await import(""/modules/my-module.js"");
}
})();
const main = document.querySelector(""main"");
for (const link of document.querySelectorAll(""nav > a"")) {
link.addEventListener(""click"", (e) => {
e.preventDefault();
import(""/modules/my-module.js"")
.then((module) => {
module.loadPageInto(main);
})
.then((module) => {
module.loadPageInto(main);
})
.then((module) => {
module.loadPageInto(main);
})
.catch((err) => {
main.textContent = err.message;
});
});
}
let myModule;
if (typeof window === ""undefined"") {
myModule = await import(""module-used-on-server"");
} else {
myModule = await import(""module-used-in-browser"");
}
Promise.all(
Array.from({ length: 10 }).map((_, index) =>
import(`/modules/module-${index}.js`)
)
).then((modules) => modules.forEach((module) => module.load()));
Array.from({ length: 10 }).map((_, index) => {
return import(`/modules/module-${index}.js`)
})
'await import(""foo"")'
""await import('foo')""
// await import('foo')
/**
* @example
* const { readPackageUp } = await import('read-pkg')
*/
";
RegexOptions options = RegexOptions.CultureInvariant;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
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 C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx