Регулярное выражение, которое ищет разных персонажей в зависимости от того, найдены ли другие - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь захватить каждый из следующих операторов импорта python как отдельные совпадающие группы в регулярном выражении с JavaScript:

from myapp.foo import SomeReallyGreatClass
from myapp.bar import AnotherClassThatIsNotAsGood, WHAT_A_CONSTANT, SUCH_CONSTANT, \
  YET_ANOTHER_CONSTANT
from myapp.baz import (FirstClassEver, ThisClassDoesNothing, CanYouBelieveThisEvenExists,
  SoManyImports)

Как бы я достиг этого с помощью регулярного выражения JavaScript? Для многострочного с косой чертой мне нужно, чтобы регулярное выражение знало, что если строка заканчивается косой чертой, она должна совпадать до следующей новой строки, которая не следует после косой черты. Для оператора с круглыми скобками необходимо знать, что если найдена открытая скобка, она будет включать последующие строки, пока не будет найдена закрывающая скобка.

1 Ответ

0 голосов
/ 28 июня 2018

Предполагая, что требование должно соответствовать всем операторам импорта,

попробуйте регулярное выражение: (^from (?:.*\n)+?(?=^from|$))

Демо

Обратите внимание, что здесь нет 1 совпадения и нескольких групп, а несколько совпадений с 1 группой для каждого импорта. При таком подходе нам не нужно обрабатывать \ или ( отдельно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...