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

预期结果:Expander Detected
实际结果:Expander etected
我需要在字符串中替换(%MSG_ID%)(%MSG_ID%)之前的字符是动态的,因此我们不能手动替换它们。

最佳答案

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

var r2 = ~/\(%MSG_ID%\)+/g;
[]是一个字符集,如果该字符集中包含的单个字符匹配,则匹配。由于该集合恰好包含D,因此在调用D时也会删除replace()。但是,您只想匹配所有字符(并按此顺序)。

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

关于regex - Haxe中的模式替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46389376/

10-13 02:33