具体来说,我有一个名为val的字符串数组,并希望用"%{n}%"
替换输入中的val[n]
的所有实例。更一般地说,我希望替换值是匹配值的函数。这是用C ++编写的,所以我选择Boost,但如果另一个常见的正则表达式库符合我的需求,请告诉我。
我找到了一些.NET(C#,VB.NET)解决方案,但我不知道我是否可以在这里使用相同的方法(或者,如果可以的话,怎么做)。
我知道有这个丑陋的解决方案:有一个"(%{0}%)|(%{1}%)..."
形式的表达式,然后有一个替换模式,如"(1?" + val[0] + ")(2?" + val[1] ... + ")"
。
但我想知道我想要做的事情是否可以更优雅地完成。
谢谢!
答案 0 :(得分:1)
我不相信boost :: regex有一个简单的方法来做到这一点。我能想到的最直接的方法是使用“(%{[0-9] +}%)”模式进行regex_search,然后迭代返回的match_results对象中的子匹配。您需要通过连接每个匹配之间的文本(match_results :: position方法将是您的朋友)来构建一个新字符串,并将子匹配转换为val数组中的值。