2

有谁知道如何编写一个正则表达式(用于一些类似 grep 的工具),它将搜索单词“vat”但排除单词“private e ”。我接手了一个项目,该项目有数百个增值税参考(有些是硬编码的,有些不是),由于英国的增值税率在 1 月 1 日发生变化,我需要用正确的税率更新项目源文件。当我在 Visual Studio 中对单词“vat”进行全局搜索时,它还会返回包含私有 void 定义的行。

除此之外,我需要搜索“15”(当前增值税率),但我想排除任何在“15”之前或之后有任何数字的行。例如,0.15 或 15 或 15% 为真,015 或 150 或 15a 为假。

正如您可以想象的那样,手动完成这项任务并非易事,因此我们将不胜感激。

谢谢,

蒂姆

4

4 回答 4

4
/\bVAT\b/

/\b(0\.)?15%?\b/

最后一个允许像“0.15%”这样的东西,但这些东西应该足够少,以后可以过滤掉。正则表达式不是最好的工具,像“10 + 5”这样的表达式呢?但如果它满足您的需求,它至少易于使用!

于 2009-12-07T22:25:54.587 回答
0

是的,您可以使用一种称为否定“后视”和“前瞻”的技术,这将匹配一些未跟随其他事物的事物。

这是一个概述:

http://www.regular-expressions.info/lookaround.html

此外,Jeff Atwood 有一篇关于它的博文,可能价值不大:

http://www.codinghorror.com/blog/archives/000425.html

于 2009-12-07T22:28:38.730 回答
0

使用 Visual Studio(正如我之前读到的那样),您可以使用:

对于大桶

〜(pri)vat〜(e)(这也将排除'vate',所以如果需要,只需取下〜(e))

而对于 15

[^0-9a-z]15[^0-9a-z]

VS 用于查找和替换的正则表达式语法与您的标准正则表达式不同,不确定 MS 为何采用这种方式,但确实如此。

于 2009-12-07T22:36:58.947 回答
0

你不能搜索“增值税”(空间增值税空间)吗?

于 2009-12-07T22:38:10.710 回答