我正在尝试将Haxe Markdown库(http://code.google.com/p/mdown/)改编成适用于跨平台的官方haxelib。我遇到了一些奇怪的事情,有些东西适用于flash和javascript,但不是neko。
请参阅此示例代码:
var str = "<p>This is a blockquote</p>";
var out = ~/(^|\n)/g.replace(str, "$1 ");
trace(out);
在Javascript和Flash上我按照预期得到了这个:
" <p>This is a blockquote</p>"
在Neko上我得到了这个:
" < p > T h i s i s a b l o c k q u o t e < / p > "
我现在可以解决它(不使用正则表达式) - 但任何人都可以告诉我这个突破的原因吗?
谢谢, 杰森
P.S。这可能有助于回答这个问题:http://haxe.org/doc/cross/regexp#implementation-details
答案 0 :(得分:2)
如果使用m
标志将其转换为多行正则表达式,则可以省略换行符部分。这可能有所帮助。
文档的相关部分就在链接页面的开头:
m:多行匹配,^和$表示行的开头和结尾
至于为什么你的问题正在发生,似乎Neko的正则表达式库错误地将你的正则表达式简化为空,这将在每个字符之间匹配。你可以放一个。在正则表达式的末尾,将空格移动到替换字符串的前面,这可能会阻止该错误发生,并且它应该与所有实现兼容。