我试图用不同的替换模式替换字符串中的某些模式.
例:
string test = "test replacing \"these characters\"";
Run Code Online (Sandbox Code Playgroud)
我想要做的是用空字符串替换所有''和'_'以及所有其他非字母或数字字符.我创建了以下正则表达式,它似乎正确地标记,但我不知道如何(如果可能)使用执行条件替换regex_replace
.
string test = "test replacing \"these characters\"";
regex reg("(\\s+)|(\\W+)");
Run Code Online (Sandbox Code Playgroud)
替换后的预期结果是:
string result = "test_replacing_these_characters";
Run Code Online (Sandbox Code Playgroud)
编辑:我不能使用提升,这就是我把它从标签中删除的原因.所以请不要回答包括提升.我必须使用标准库.可能是一个不同的正则表达式会完成目标,或者我只是坚持做两次传球.
编辑2:我不记得在\w
我的原始正则表达式中包含了哪些字符,在查找之后我进一步简化了表达式.再一次,目标是任何匹配\ s +应该用'_'替换,匹配\ W +的任何东西都应该用空字符串替换.
我想捕捉出现在字符串中任何位置的数字,并用"(.+)"替换它们.
但我想只抓住那些在%
它们前面有偶数个数字的数字.如果有任何周围的字符被抓住,不用担心:我们可以使用捕获组来过滤掉这些数字.
我无法想出一个ECMAscript正则表达式.
这是游乐场:
abcd %1 %%2 %%%3 %%%%4 efgh
abcd%12%%34%%%666%%%%11efgh
Run Code Online (Sandbox Code Playgroud)
如果你意识到,第三次尝试几乎正在发挥作用.唯一的问题是在操场的第二行.实际上,我想在那个表达中说的是:
匹配一个数字,如果它前面有偶数个%
s AND,则满足以下任一条件:
%
.有没有办法匹配缺少一个角色?
这就是我\0
在第三次尝试中尝试做的事情.