相关疑难解决方法(0)

有条件地用字符串替换正则表达式匹配

我试图用不同的替换模式替换字符串中的某些模式.

例:

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 +的任何东西都应该用空字符串替换.

c++ regex visual-studio-2010 visual-c++ c++11

16
推荐指数
1
解决办法
3万
查看次数

如何只匹配那些在它们前面有偶数个`%`的数字?

我想捕捉出现在字符串中任何位置的数字,并用"(.+)"替换它们.

但我想只抓住那些在%它们前面有偶数个数字的数字.如果有任何周围的字符被抓住,不用担心:我们可以使用捕获组来过滤掉这些数字.

我无法想出一个ECMAscript正则表达式.

这是游乐场:

abcd %1 %%2 %%%3 %%%%4 efgh

abcd%12%%34%%%666%%%%11efgh
Run Code Online (Sandbox Code Playgroud)

成功的捕获将表现如下:
期望的行为


我尝试过的事情:

尝试1

尝试2

尝试3


如果你意识到,第三次尝试几乎正在发挥作用.唯一的问题是在操场的第二行.实际上,我想在那个表达中说的是:

匹配一个数字,如果它前面有偶数个%s AND,则满足以下任一条件:

  • 上面的整个表达之前没有任何 [没有(未消耗或其他)字符].
  • 上面的整个表达式前面是一个字符以外的字符%.

有没有办法匹配缺少一个角色?
这就是我\0在第三次尝试中尝试做的事情.

javascript c++ regex std ecmascript-7

6
推荐指数
1
解决办法
156
查看次数