Подтвердить что ты не робот

Как использовать группы без захвата в grep?

Этот ответ предполагает, что grep -P поддерживает синтаксис (?:pattern), но он не работает для меня (группа по-прежнему отображается и отображается как часть матча). Я что-то пропустил?

Я пытаюсь grep -oP "(?:syntaxHighlighterConfig\.)[a-zA-Z]+Color" SyntaxHighlighter.js на этот код, и ожидаем, что результаты будут следующими:

wikilinkColor
externalLinkColor
parameterColor
...

но вместо этого я получаю:

syntaxHighlighterConfig.wikilinkColor
syntaxHighlighterConfig.externalLinkColor
syntaxHighlighterConfig.parameterColor
...
4b9b3361

Ответ 1

"Не захватывать" не означает, что группа не является частью матча; это означает, что значение группы не сохраняется для использования в обратных ссылках. То, что вы ищете, является утверждением с нулевой шириной:

grep -Po "(?<=syntaxHighlighterConfig\.)[a-zA-Z]+Color" file