匹配句子的正则表达式不以指定的前缀开头

时间:2015-10-05 13:04:57

标签: regex c++builder-xe

我想在双引号中找到字符串,但前提是它们在指定函数foo的调用之外使用。例如:

foo("some str1"); // ignore
foo2("another string"); // need this
"simple string"; // need this
foo(L"wide str"); // ignore
#define NAME "name" // need this
int i = foo("must be ignored"); // ignore

我在answer尝试了\b(?!foo\()L?"[^"]*"\b,但它无法正常工作。在一行上使用结束双引号作为另一行的开头。像这样"); // ignore<CR> foo2("

如果我认为我应该包括所有格量化。子串不满足完全排除在进一步搜索之外。但不知道如何正确地做到这一点。

需要在Embarcadero RAD Studio XE中搜索文件,但对Perl regexp语法中的任何决定都表示满意。

重要:想要找到foo函数之外的双引号字符串的所有出现。并且不要被foo内的字符串分散注意力。

2 个答案:

答案 0 :(得分:1)

您可以在此处尝试:https://regex101.com/r/mG7gP7/1 我匹配两个场景

  • 搜索函数而不是名称foo,并匹配引号内的字符串。
  • 没有函数调用的引号内的任何文本

答案 1 :(得分:1)

您如何看待这个one

/(^(?!foo\()|\)).*"(.*)"/gm