GExperts中使用grep表达式查找包含字符串字面量的源代码行

3
如何在Delphi源代码中使用GExperts grep搜索查找包含字符串字面量而不是资源字符串的所有行,但排除那些标记为“不翻译”的行?
示例:
这一行应该匹配
  ShowMessage('Fatal error! Save all data and restart the application');

这一行不应匹配

  FieldByName('End Date').Clear; // do not translate

(特别询问GExpert,因为据我所知它的grep实现有限)

个人而言,我会使用命令行 grep。 - David Heffernan
+1 对于这个问题。我会在GExpertsDiscuss中提问http://tech.groups.yahoo.com/group/GExpertsDiscuss/ - CloudyMarble
好主意 - 也许可以将其作为新专家实现... - mjn
问题在于您想要否定表达式的一部分,这是正则表达式和Grep -v都无法支持的。 - Jeroen Wiert Pluimers
1个回答

2

一般情况下,正则表达式不能被否定

由于您想否定搜索的一部分,在GExpers Grep Search理解的正则表达式边界内,以下是我能够得到的最接近的结果:

\'.*\'.*[^n][^o][^t][^ ][^t][^r][^a][^n][^s][^l][^a][^t][^e]$

编辑:忘记了行尾的$标记,因为GExperts Grep Search不能没有。

blokhead解释了为什么你通常不能否定

这个Visual Studio快速搜索使用波浪线进行否定,但是GExperts Grep Search不能。

grep命令行搜索具有-v反向)选项以否定完整搜索(但不是部分搜索)。

一个完美的手册否定变得非常复杂

--jeroen


当我这样做时,我只是使用grep进行正向搜索,然后使用-v将其传递到负向搜索。 - David Heffernan
2
你如何将GExperts Grep搜索进行管道传输? - Jeroen Wiert Pluimers
2
@David:你怎么让输出可点击,这样你就可以跳转到编辑器中的源代码行了呢?我想这就是mjn想要的。我记得(但忘记是哪个IDE),你可以在输出窗口中有工具输出,使其可点击。你知道这是否可能吗? - Jeroen Wiert Pluimers
该表达式会出现误报,例如:if Pos('.', PropName) > 0 then // do not translate - mjn
@mjn:抱歉,我忘记加上 $ 了,在这里它可以工作,请告诉我它是否适用于您。 - Jeroen Wiert Pluimers
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接