Регулярное выражение для поиска ключевых слов в операторе импорта - PullRequest
0 голосов
/ 05 октября 2018

Давайте представим, что у нас есть следующие операторы импорта (не зависящие от языка):

import "./test"

import "./test" as Test

import { Test } from "./test"

import { Person as Individual } from "./test"

Я пытаюсь написать регулярное выражение для получения следующих групп, выделенных жирным шрифтом:

импорт"./test"

импорт " ./test " как тест

импорт {Test} из"./test"

import {Person as Individual, Test, Bag as Рюкзак} из"./test"

Я попытался написать следующее регулярное выражение:

/^(import)(?:.+?)(\s+from\s+|\s+as\s+)*(?:.+?)$/gm

https://regex101.com/r/4sO59R/1

Но это не такне работает, как я ожидал ... я могу только получить import ... Как мне правильно написать это?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Это также может сработать и будет проще для понимания.

\b((^import)|(as)|(from))\b

Попробуйте здесь:

https://regex101.com/r/7aIudD/2

РЕДАКТИРОВАТЬ: IСледует добавить, что я только что заметил, что вы используете Javascript, поэтому повторные захваты могут не поддерживаться.Это означает, что вам, возможно, придется прибегнуть к ручным способам поиска строк (не сложно) или как-то разделить строку и выполнить несколько поисков.Я бы пошел на ручной поиск, если проблема так проста, как вы описали.

0 голосов
/ 05 октября 2018

Хотя идеальное регулярное выражение для сбора ваших данных кажется довольно сложным, самое близкое, что я могу придумать, это для вашего заданного текста,

^(import)(?:.*?(as))?(?:.*?(as))?(?:.*?(from))*.*$

Играть здесь https://regex101.com/r/7aIudD/1

...