regex - Haxe 中的模式替换

标签 regex haxe

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

预期结果:检测到扩展器

实际结果:Expander etected

我需要替换字符串中的 (%MSG_ID%)(%MSG_ID%)之前的字符是动态的,所以我们不能手动替换它们。

最佳答案

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

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

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

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

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

相关文章:

ruby - 让星形正则表达式运算符失败

python - 用 python 正则表达式替换多行

regex - 从压缩文件中提取正则表达式

node.js - haxe node js 拆分js,而不是一个js

Haxe – 使用可序列化的 Int64 键实现 Map 的正确方法( native 目标)

python - 转义 linux 路径和文件名中的空格

haxe - 在 HaxeFlixel 中编码 Assets 的最佳解决方案

haxe - 为所有按钮使用相同的回调或事件监听器时如何检查按下了哪个按钮

迭代器(不是迭代器)上的 Lambda 迭代

php - 如何从 HTML 标签中剥离数据