RegEx Expression for Eclipse 搜索所有未处理的项目

RegEx Expression for Eclipse that searches for all items that have not been dealt with

为了帮助阻止 SQL 注入攻击,我在我的代码中检查了大约 2000 个参数请求以验证它们。我通过确定它们应该 return 的值类型(例如整数、双精度)然后对它们应用一个函数来清理值来验证它们。

我处理过的任何请求都是这样的

*SecurityIssues.*(request.getParameter

其中 * 表示同一行上的任意数量的字符。

我可以在 Eclipse 搜索 (CTRL+H) 中使用什么 RegExp 表达式,这将帮助我搜索所有我尚未处理的内容,即文本 request.getParameter 出现的所有时间不是 前面有 SecurityIssues?

匹配示例

正则表达式应匹配以下各项,例如

int companyNo = StringFunctions.StringToInt(request.getParameter("COMPANY_NO‌​"))
double percentage = StringFunctions.StringToDouble(request.getParameter("MARKETSHARE"))
int c = request.getParameter("DUMMY")

但不应该匹配:

int companyNo = SecurityIssues.StringToIntCompany(request.getParameter("COMP‌​ANY_NO"))

例如尝试

=\s*?((?!SecurityIssues).)*?(request\.getParameter)\(

备注

括号()是组匹配的特殊字符。他们需要使用 \ 进行转义。 If .* 将匹配任何内容,包括您不希望它匹配的字符。所以 .*? 会阻止它匹配任何东西(勉强)。如果在通配符之后需要匹配其他项目,这会很有帮助。

https://docs.oracle.com/javase/tutorial/essential/regex/index.html有教程,我想eclipse应该都有。然后您也可以处理通用替换。

问题

从阅读 Regular expression that doesn't contain certain string and Regular expression to match a line that doesn't contain a word? 看来,创建一个匹配任何内容但不包含特定单词的正则表达式似乎相当困难。

借助@michaeak 提供的灵感和链接(谢谢),以及在 https://regex101.com/ 中的测试,我似乎找到了答案:

^((?!SecurityIssues).)*(request\.getParameter)

这个答案的优点是我可以将 SecurityIssues 一词列入黑名单,而不是必须将我确实想要的格式列入白名单。

请注意,它相对较慢,并且在执行搜索时也大大降低了我的计算机速度。