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

33

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

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

wikilinkColor
externalLinkColor
parameterColor
...

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

syntaxHighlighterConfig.wikilinkColor
syntaxHighlighterConfig.externalLinkColor
syntaxHighlighterConfig.parameterColor
...
вам следует'мы включили содержимое файла, который выповторяйте grepping, прежде чем показывать, что вы ожидаете или что вы получаете barlop
Можете ли вы показать некоторые sampel ввода / вывода? Gilles Quenot
@sputnick Я отредактировал вопрос, чтобы добавить больше деталей. waldyrious

Ваш Ответ

1   ответ
51

Non-захват» Безразлично»не означает, что группа неt часть матча; это означает, что группазначение sISN»сохранено для использования в обратных ссылках, То, что вы ищете, этоутверждение о нулевой ширине:

grep -Po "(?
Для справок,(? Rockallite
Ваше утверждение за кадром не может быть переменной длины. Ваше утверждение позади этого утверждения - это(<?= syntaxHighlighterConfig +) ", Помещение плюса там говоритодин или несколько из предшествующего символато есть пространство. Вы просто можетене может иметь утверждения за спиной, которое может оказаться более одной длины. Может быть, grep только для одного пробела, а затем передать результат через 'тр» или же 'СЭД» убрать пробелы. Todd Walton
поздравляю с золотом! fedorqui
Обратите внимание, что все виды сзади имеют нулевую ширину barlop

Похожие вопросы