Символ соответствия регулярному выражению, которому предшествует шаблон - PullRequest
2 голосов
/ 23 января 2020

С учетом следующей настройки:

  • вход = "window.addEventListener('click', (s, d) => {});"

  • желаемое совпадение = "(s, d) =>"

пробовал регулярное выражение

(.*).*=>

Но это будет соответствовать "('click', (s, d) =>", что нежелательно.

Любые идеи о том, как изменить регулярное выражение так, чтобы совпадение начиналось только с ближайших открывающих скобок перед символом "=>"?

Любая помощь очень ценится!

Ответы [ 3 ]

2 голосов
/ 23 января 2020

Вы можете использовать это регулярное выражение с re.findall:

>>> s = "window.addEventListener('click', (s, d) => {});"
>>> print (re.findall(r'\([^()]*\)\s*=>', s)[0])
(s, d) =>

Подробности RegEx:

  • \(: совпадение (
  • [^()]*: соответствует 0 или более любому символу, который не является ( и )
  • \): соответствует )
  • \s*=>: соответствует 0 или более пробелов, за которыми следует текст =>
1 голос
/ 23 января 2020

(?<=\().+(\(.+\).*=>)

См. Regex101

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

1 голос
/ 23 января 2020

это то, что вам нужно использовать. точнее смотри сзади https://javascript.info/regexp-lookahead-lookbehind

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