我有一个这样的字符串:
This is a link [[abcd 1234|xyz 1234]] [[India]] [[abcd 1234|xyz 1234]]
我想得到:
This is a link abcd 1234 [[India]] abcd 1234
我想使用具有 | 的方括号 把以前的东西拿出来| 并将其替换为整个双方括号,而不是替换任何没有 | 的双方括号 使用 Boost 正则表达式。
任何帮助将不胜感激。
我有一个这样的字符串:
This is a link [[abcd 1234|xyz 1234]] [[India]] [[abcd 1234|xyz 1234]]
我想得到:
This is a link abcd 1234 [[India]] abcd 1234
我想使用具有 | 的方括号 把以前的东西拿出来| 并将其替换为整个双方括号,而不是替换任何没有 | 的双方括号 使用 Boost 正则表达式。
任何帮助将不胜感激。
只需使用前瞻,(?!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
"\\[\\[(.*?)\|.*?]]"
[[
这将匹配分隔符之间]]
的文本|
。是和$1
之间的文本。[[
|