Haxe的模式替换

时间:2017-09-24 11:04:28

标签: regex haxe

var str2 : String = "Expander Detected (%MSG_ID%)";
var r2 = ~/[\(%MSG_ID%\)]+/g;
trace(r2.replace(str2, ""));

预期结果:Expander Detected

实际结果:Expander etected

我需要在字符串中替换(%MSG_ID%)(%MSG_ID%)之前的字符是动态的,因此我们无法手动替换它们。

1 个答案:

答案 0 :(得分:6)

您需要移除周围的[]。这按预期工作:

var r2 = ~/\(%MSG_ID%\)+/g;

[]是一个字符集,如果集合中包含的单个字符匹配,则匹配。由于该集合恰好包含D,因此在调用D时也会删除replace()。但是,如果所有字符(以及该顺序)存在,您只想匹配。

我建议使用像regex101.com这样的工具来测试正则表达式。你可以很好地看到那里的问题: