import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:(?:import|export)[^`'\"]*from\\s+[`'\"])(?<from>[^`'\"./][^`'\"]*)(?:[`'\"])|(?:\\bimport)(?:\\s+|\\s*\\(\\s*)(?:[`'\"])(?<plain>[^`'\"./][^`'\"]*)(?:[`'\"])";
final String string = "import { defaultTemplateProcessor } from './lib/default-template-processor.js';\n"
+ "import { SVGTemplateResult, TemplateResult } from './lib/template-result.js';\n"
+ "export { DefaultTemplateProcessor, defaultTemplateProcessor } from './lib/default-template-processor.js';\n"
+ "export { directive, isDirective } from './lib/directive.js';\n"
+ "export { removeNodes, reparentNodes } from './lib/dom.js';\n"
+ "export { noChange, nothing } from './lib/part.js';\n"
+ "export { AttributeCommitter, AttributePart, BooleanAttributePart, EventPart, isIterable, isPrimitive, NodePart, PropertyCommitter, PropertyPart } from './lib/parts.js';\n"
+ "export { parts, render } from './lib/render.js';\n"
+ "export { templateCaches, templateFactory } from './lib/template-factory.js';\n"
+ "export { TemplateInstance } from './lib/template-instance.js';\n"
+ "export { SVGTemplateResult, TemplateResult } from './lib/template-result.js';\n"
+ "export { createMarker, isTemplatePartActive, Template } from './lib/template.js';\n"
+ "import { render } from 'lit-html/lib/shady-render.js';\n"
+ "import { UpdatingElement } from './lib/updating-element.js';\n"
+ "export * from './lib/updating-element.js';\n"
+ "export * from './lib/decorators.js';\n"
+ "export { html, svg, TemplateResult, SVGTemplateResult } from 'lit-html/lit-html.js';\n"
+ "import { supportsAdoptingStyleSheets } from './lib/css-tag.js';\n"
+ "export * from './lib/css-tag.js';\n"
+ "import { LitElement } from 'lit-element';\n"
+ "import { IronMeta } from '@polymer/iron-meta/iron-meta.js';\n"
+ "import { whenOnline } from 'hadron-core/lib/utils/async.js';\n"
+ "import { apiUrl, apiVersion } from '../../src/config.js';\n"
+ "import { importModule, dynamicImportAvailable } from '../../src/dynamic-imports-polyfill.js';\n"
+ "import observeProperties from 'hadron-core/lib/utils/object-property-observer.js';\n"
+ "export { version };\n"
+ "import { ElementMixin, version } from './lib/mixins/element-mixin.js';\n"
+ "export { html } from './lib/utils/html-tag.js';\n\n"
+ "class Foo {\n\n"
+ " constructor() {\n"
+ " import(`foo.js`);\n"
+ " import(`${foo}`);\n"
+ " import('bar.js');\n"
+ " } \n\n"
+ "}";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html