std :: regex在字符串内的括号内查找单词,然后替换它(和括号)

时间:2013-08-26 20:53:28

标签: c++ regex string c++11 stl

遇到这个问题。我第一次使用std :: regex,语法对我来说有点不直观。

我的字符串包含 [VARIABLE] ,有时 [VARIABLEA] \ [VARIABLEB]

比方说,我想用Windows替换 [VARIABLEA] ,用System32替换 [VARIABLEB] ,结果将是 Windows \ System32

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

我基本上已经流式传输到Stringstream中进行替换(当我找到一个匹配时我放入新值,当我不输入原始密钥时,我刚刚流入的所有其他内容)。但我不确定std :: regex是否可能为此提供了更好的选择。

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

我的日程安排相当紧张,只是在这张桌子上敲了很长时间。我知道这可能很简单,但我学得很慢。提前感谢您提供的任何帮助。

编辑:

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

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容的正则表达式:

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

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

然后只需替换你找到匹配的地方。