使用正则表达式仅替换非文字

时间:2015-07-22 20:59:17

标签: regex

我有一个包含数百个正则表达式的列表。它们都有文字的一部分,大多数也有各种匹配模式(如。*,[A-Za-z] +,\ d +等)。此列表一直变长,并由其他人(不是我)自动生成,因此我无法手动编辑。

例如,这是一个正则表达式:

Clock advanced by .* ticks

匹配:

Clock advanced by 319 ticks

我需要做的是使用正则表达式用XXX替换非文字字符串。例如,对于上述情况,我需要到达:

Clock advanced by XXX ticks

我可以使用Java,JavaScript,PHP或bash脚本(和可执行文件)来实现这一目标。

1 个答案:

答案 0 :(得分:1)

在正则表达式中使用捕获组,在替换中使用反向引用,以复制您不想替换的部分。在Javascript中:

str = 'Clock advanced by 219 ticks';
newstr = str.replace(/(Clock advanced by ).*( ticks)/, '$1XXX$2');
alert(newstr);