Geany's documentation on negative assertions让它看起来像是可能的。
作为参考,这可行,并给我结果:
pcregrep -r "(?<!= )function\(" src/main-js/
但是同样的正则表达式,或任何带有负面背后的正则表达式,从Geany(v 1.24.1)推出时没有给我任何结果
问题出在哪里?文档错了吗?
精确度主题不关于如何避免做出负面看法,但关于如何做任何标准的PCRE负面看法。
答案 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