正则表达式为"一个标记出现多次"

时间:2014-05-16 00:55:45

标签: regex

从MSDN,从“CString::Format”的解释中可以看出,

如果字符串对象本身作为Format的参数提供,则调用将失败。以下是一个例子:

CString str = "Some Data";
str.Format("%s%d", str, 123);   // Attention: str is also used in the parameter list.

现在我想检查一下我的项目中是否有违反此规则的代码。

我认为正则表达式可以帮助我实现这一目标。 (我的意思是通常在编辑器的搜索/查找文件函数中构建的正则表达式,而不是C#/ C ++ / Java / Python中使用的正则表达式等)

简而言之,表达式可能如下所示:

XXX.Format\(.*XXX.*\)

其中XXX可以变为有效的变量名称。例如。 “str”,“sql_string”,“_ mystr”

注意:我可以下载任何编辑器,如Notepad ++,sublime text;我有视觉工作室。如果你能在任何编辑器上解决这个问题,那就没关系了。

1 个答案:

答案 0 :(得分:1)

如下所示的正则表达式可以完成这项工作(使用\1来引用第一个捕获组 - 您的变量):

^\s*(.+?)\.Format\(.*\1.*\)

有一些假设和注意事项:

  • 我认为该变量是该行中的第一件事,仅以空格开头。

  • 仅在.Format之后检查变量以显示在括号中(正如您在问题中所述)。相同的变量可能出现在第一个参数中,正则表达式当前不会检查它。

  • 如果需要,可以在正则表达式中添加额外的空格。