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

时间:2015-03-13 13:30:31

标签: regex pcre geany negative-lookbehind

Geany's documentation on negative assertions让它看起来像是可能的。

作为参考,这可行,并给我结果:

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

但是同样的正则表达式,或任何带有负面背后的正则表达式,从Geany(v 1.24.1)推出时没有给我任何结果

enter image description here

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

精确度主题关于如何避免做出负面看法,但关于如何做任何标准的PCRE负面看法。

2 个答案:

答案 0 :(得分:5)

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

  

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

然而,在您尝试之后,您遇到了此错误:

  

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

...我被告知这是一个geany bug。 Geany致电grep -E-P与之不兼容。

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

所述shell脚本的一个示例:

#!/bin/sh

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

exec grep $matchopts "$@"

Geany使用either -F or -E(这些是POSIX grep中唯一可用的引擎)用于grep,因此无法传递-P的原因。

我向geany开发者报告了the bug

答案 1 :(得分:1)

另一个解决方法是避免负面的背后断言...但它更加丑陋:

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