是否有人知道如何编写正则表达式(用于某些类似grep的工具),它会搜索单词'vat'但排除单词'pri vat e'。我已经接管了一个项目,其中有数百个增值税参考(一些是硬编码的,一些没有),并且随着英国的增值税税率在1月1日发生变化,我需要以正确的费率更新项目源文件。当我在Visual Studio中对“vat”一词进行全局搜索时,它还返回包含私有void定义的行。
除此之外,我需要搜索'15'(当前增值税率),但我想排除任何在'15'之前或之后有任何数字的行。例如,0.15或15或15%为真,015或150或15a为假。
正如您可以想象的那样,手动操作并非易事,因此非常感谢任何帮助。
谢谢,
添
答案 0 :(得分:5)
/\bVAT\b/
/\b(0\.)?15%?\b/
最后一个允许“0.15%”这样的东西,但那些应该足够少,以便以后过滤掉。正则表达式不是最好的工具,那么像“10 + 5”这样的表达式呢?但如果它满足您的需求,它至少是易于使用的!
答案 1 :(得分:1)
是的,你可以使用一种称为负面'lookbehind'和'lookahead'的技术,它将匹配一些其他东西没有的东西。
以下是概述:
http://www.regular-expressions.info/lookaround.html
此外,杰夫阿特伍德有一篇关于它的博客文章可能有一些小的价值:
答案 2 :(得分:1)
使用Visual Studio(正如我之前所做的那样)你可以使用:
对于增值税
〜(pri)vat~(e)(这也将排除'vate'所以只要取下〜(e),如果需要的话)
对于15
[^ 0-9A-Z] 15 [^ 0-9A-Z]
VS用于查找和替换的正则表达式语法与标准正则表达式不同,不确定为什么MS采用这种方式,但确实如此。
答案 3 :(得分:0)
你不能搜索“增值税”(空间增值税空间)吗?