2015-03-13 3 views
6

Geany's documentation on negative assertions делает вид, что они возможны.Возможны ли отрицательные искажения в регулярных выражениях в Geany?

Для справки, это работает и дает мне результаты:

pcregrep -r "(?<!=)function\(" src/main-js/ 

Но то же регулярное выражение, или любое регулярное выражение с отрицательным просмотром назад, не дает мне никакого результата при запуске из Geany (v 1.24.1)

enter image description here

Где проблема? Неверная документация?

Точность: тема не о том, как делать, чтобы избежать отрицательного взгляд позади, но о том, как сделать любой стандартный PCRE отрицательный внешний вид сзади.

+0

попробовать 'функция \ (' –

ответ

5

Я получил поддержку от разработчиков geany на freenode. Очень полезно. Вот что они сказали мне:

The documented RE syntax only applies to the RE engine directly used by Geany (e.g. in Find), but the Find in Files features calls the grep tool (as configured in preferences->tools->grep), which has its own syntax. For GNU grep, you can add "-P" to the "Extra options" field in the dialog

Однако, после того, как вы попробовали это, вы имели эту ошибку:

/bin/grep: conflicting matchers specified

... к которому я сказал, что это было ошибкой Geany. Geany вызывает grep -E, а -P несовместим с этим.

Ваш единственный обходной способ заключается в том, чтобы сценарий оболочки вызывал grep с -P вместо -E и использовал этот скрипт. Вы должны иметь возможность настроить средство grep для вызова в настройках geany.

Пример указанного сценария оболочки:

#!/bin/sh 

matchopts=$(echo "$1" | tr E P) 
shift 

exec grep $matchopts "[email protected]" 

Geany использует either -F or -E (это единственные доступные двигатели в POSIX Grep) для Grep, следовательно, почему вы не можете пройти -P.

Я сообщил the bug разработчикам geany.

+2

Хорошая работа <°)))))> –

1

Другой обходной путь, чтобы избежать отрицательного утверждения ... 'назад, но это намного уродливее: (?

(^.?|[^=] |=[^ ]|[^=][^ ])function 

 Смежные вопросы

  • Нет связанных вопросов^_^