遇到这个问题。我第一次使用std :: regex,语法对我来说有点不直观。
我的字符串包含 [VARIABLE] ,有时 [VARIABLEA] \ [VARIABLEB] 。
比方说,我想用Windows替换 [VARIABLEA] ,用System32替换 [VARIABLEB] ,结果将是 Windows \ System32
您认为找到这些匹配项的最佳正则表达方式是什么?您认为更换它们的最佳方法是什么?
我基本上已经流式传输到Stringstream中进行替换(当我找到一个匹配时我放入新值,当我不输入原始密钥时,我刚刚流入的所有其他内容)。但我不确定std :: regex是否可能为此提供了更好的选择。
这是我一直在尝试的正则表达式:std::regex("\\\\*\\[[^\\]]*\\]\\\\*");
我的日程安排相当紧张,只是在这张桌子上敲了很长时间。我知道这可能很简单,但我学得很慢。提前感谢您提供的任何帮助。
编辑:
另外,我试图对帖子进行一些简化,但为了清楚起见,我正在使用unicode字符串,所以它真的是std::wregex(L"\\\\*\\[[^\\]]*\\]\\\\*");
。所以我不知道我是否可以在那里弹出原始文字的R。
答案 0 :(得分:1)
您可以使用以下内容的正则表达式:
@"^\[VARIABLEA\]$"
,当您解析字符串时,它会为您提供匹配。
您还可以使用.split()或Regex.split()方法将字符串拆分为分隔符上的数组 见:http://www.dotnetperls.com/split
然后只需替换你找到匹配的地方。