0

这个有点麻烦。我第一次使用 std::regex,语法对我来说有点不直观。

我有类似[VARIABLE]和有时[VARIABLEA] \ [VARIABLEB]之类的字符串。

例如,假设我想将[VARIABLEA]替换为 Windows,将[VARIABLEB]替换为 System32,因此结果将是Windows\System32

您认为查找这些匹配项的最佳正则表达式是什么?您认为更换它们的最佳方法是什么?

我基本上一直在流式传输到 Stringstream 以进行替换(当我找到匹配项时,我输入了新值,当我没有输入原始键时,我只是输入了其他所有内容)。但我不确定 std::regex 是否为此提供了更好的选择。

这是我一直在尝试的正则表达式:std::regex("\\\\*\\[[^\\]]*\\]\\\\*");

我的日程安排很紧,而且我的头在桌子上敲了太久了。我知道这可能很简单,但我学得很慢。提前感谢您提供的任何帮助。

编辑:

另外,我试图为帖子简化一点,但为了清楚起见,我使用的是 unicode 字符串,所以它真的是std::wregex(L"\\\\*\\[[^\\]]*\\]\\\\*");. 所以我不知道我是否可以在那里弹出原始文字的 R。

4

1 回答 1

1

您可以使用类似的正则表达式:

@"^\[VARIABLEA\]$"当您解析字符串时,这将为您提供匹配项。

您还可以使用 .split() 或 Regex.split() 方法将字符串拆分为分隔符上的数组 SEE: http: //www.dotnetperls.com/split

然后只需替换您找到匹配项的位置。

于 2013-08-26T21:09:42.787 回答