在Geany中,正则表达式搜索中的负面观察是否可行?

Den*_*ret 6 regex pcre negative-lookbehind geany

Geany关于否定断言的文档使它看起来像是可能的.

作为参考,这是有效的,并给我结果:

pcregrep -r "(?<!= )function\(" src/main-js/
Run Code Online (Sandbox Code Playgroud)

但同样的正则表达式,或任何具有负面背后的正则表达式,从Geany启动时都没有给我任何结果(v 1.24.1)

在此输入图像描述

问题出在哪儿 ?文档错了吗?

精确度:主题不是关于如何避免背后的负面看法,而是关于如何做任何标准的PCRE负面看.

Flo*_*ine 5

我得到了freenode上geany开发者的支持.很有帮助.这是他们告诉我的:

记录的RE语法仅适用于Geany直接使用的RE引擎(例如,在Find中),但Find in Files功能调用grep工具(在preferences-> tools-> grep中配置),它具有自己的语法.对于GNU grep,可以在对话框的"Extra options"字段中添加"-P"

但是,在您尝试之后,您遇到了以下错误:

/ bin/grep:指定的冲突匹配器

...我被告知这是一个geany bug.Geany调用grep -E,并且-P与它不兼容.

您唯一的解决方法是让shell脚本调用grep -P而不是-E,并使用此脚本.您应该能够配置grep工具以调用geany首选项.

所述shell脚本的一个例子:

#!/bin/sh

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

exec grep $matchopts "$@"
Run Code Online (Sandbox Code Playgroud)

Geany使用两种-F-E(这些都是在POSIX grep的唯一可用的发动机)grep的,因此为什么不能传递-P.

我已经向geany开发者报告了这个bug.

  • 做得好.<°)))))> (2认同)