Re: [问题] regex_replace取代非comment内的内容

楼主: cutekid (可爱小孩子)   2018-10-08 18:21:26
以下处理 /* */ 这种的注解
#include <iostream>
#include <regex>
using namespace std;
int main() {
string text = "\/*comment 1*\/text1\n\/*comment 2*\/text2\n";
string pattern = "([\\s\\S]*?)((?:\/\\*[\\s\\S]+?\\*\/)|$)";
regex re(pattern);
cout << "pattern: " << pattern << endl;
cout << regex_replace(text,re,"$2");
return 0;
}
程式: https://ideone.com/7eCkXG
参考: http://www.cplusplus.com/reference/regex/regex_replace/
※ 引述《boy770329 (A-So)》之铭言:
: 问个regular expreesion的问题 因为试了很久还是找不到解
: 现在想用regex_replace去取代SQL query内的某个字串,条件是那个字串不在注解内
: 因为SQL的注解写法有一行的
作者: art1 (人,原来不是人)   2018-10-08 22:42:00
原来是没把 \ 逸出的关系c++ 没支援 raw string 真可惜
作者: thefattiger (LT)   2018-10-08 22:46:00
committee:我们听到了估狗了一下, C++有raw string耶,类似Python的写法
作者: art1 (人,原来不是人)   2018-10-08 23:23:00
原来有,那用 raw string 还是比较方便,逸出好麻烦的
作者: LPH66 (-6.2598534e+18f)   2018-10-09 17:19:00
raw string 是 C++11 才有的新语法喔, 不过比 python 方便C++11 的 raw string 有多一对括号, 括号外还能塞东西这些都是用来避免已经写了 raw string 还要跳脱东西
作者: art1 (人,原来不是人)   2018-10-10 22:44:00
不懂撷取 group 2 的目的是什么,如果是我的话会写成这样([\\s\\S]*?)(?:\/\\*[\\s\\S]+?\\*\/|$)
楼主: cutekid (可爱小孩子)   2018-10-11 00:08:00
非注解替换,保留注解

Links booklink

Contact Us: admin [ a t ] ucptt.com