1

我有一个这样的字符串:

This is a link [[abcd 1234|xyz 1234]]  [[India]] [[abcd 1234|xyz 1234]]

我想得到:

This is a link abcd 1234 [[India]] abcd 1234

我想使用具有 | 的方括号 把以前的东西拿出来| 并将其替换为整个双方括号,而不是替换任何没有 | 的双方括号 使用 Boost 正则表达式。

任何帮助将不胜感激。

4

2 回答 2

1

只需使用前瞻,(?!pattern)

#include <iostream>
#include <string>
#include <boost/regex.hpp>

int main()
{
    std::string str = "This is a link [[abcd 1234|xyz 1234]]  [[India]] [[abcd 1234|xyz 1234]]";
    boost::regex re("\\[\\[(((?!\\]\\]).)+)\\|.*?]]");
    std::cout << boost::regex_replace(str, re, "$1") << '\n';
}

演示: http: //liveworkspace.org/code/2Mu5cN

于 2012-12-18T15:33:54.907 回答
0
"\\[\\[(.*?)\|.*?]]"

[[这将匹配分隔符之间]]的文本|。是和$1之间的文本。[[|

于 2012-12-18T14:36:32.720 回答