字符串sub与交替替换

时间:2015-01-29 08:00:11

标签: regex string

假设x = "hello_world_"

我希望匹配所有"_"并以交替的方式将它们替换为1或2。例如,"hello_world_"将成为"hello1world2"。同样,"hello_world_how_are_you"将成为"hello1world2how1are2you"

我还没有找到一个矢量化的sub版本,允许我传入一个替换字符串数组。这样的事情存在吗?

2 个答案:

答案 0 :(得分:1)

搜索

_([^_]*)_

并将所有内容替换为

1${1}2  # exact syntax depends on the regex flavor/language used.

最后,对_进行上一次搜索,并将其替换为1,以防下划线数量奇数。

测试live on regex101.com

答案 1 :(得分:1)

蒂姆给出的答案将起作用,但仅适用于案文中偶数的下划线。如果您需要更通用的解决方案,我将分两步完成。首先在奇数位置找到并替换1个全部下划线。

正则表达式:_([^_]*_)?

替换表达式:1${1}

试试here

然后用2:

查找并替换所有剩余的下划线

正则表达式:_

替换表达式:2