Javascript регулярное выражение получить слово, но исключить из блоков комментариев - PullRequest
2 голосов
/ 07 марта 2019

Допустим, у меня есть следующее внутри файла

<button aria-label="<?php echo JText::_('JCANCEL'); ?>">

// JText

/**
 * Comment block
 * ------------------
 * @param   JText
 *
 */

Я пытаюсь сопоставить слово JText, но только если оно не внутри встроенного комментария или блока комментариев.

Таким образом, в приведенном выше примере должен быть возвращен только первый экземпляр.

Пока у меня есть следующее:

^\s*(?=\S)(?!\/\*\*)(?!\/\/)(?!\*).*(\\?)JText

, который положительно смотрит в будущее для /**, */ и //, однако при тестировании это возвращает все, вплоть до JText:

<button aria-label="<?php echo JText

Вот рабочий пример того, что я имею до сих пор:

https://regex101.com/r/voOvGv/1/

Так как же я могу вернуть только строку JText? Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 08 марта 2019

Хорошая мысль о парсере, но если вы готовы рисковать, просто сделайте текст группой:

^\s*(?=\S)(?!\/\*\*)(?!\/\/)(?!\*).*(\\?)(JText)

https://regex101.com/r/WkrPxk/1

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