haxe正则表达式中的跨平台不一致

时间:2012-04-25 02:00:28

标签: regex cross-platform markdown pcre haxe

我正在尝试将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

1 个答案:

答案 0 :(得分:2)

如果使用m标志将其转换为多行正则表达式,则可以省略换行符部分。这可能有所帮助。

文档的相关部分就在链接页面的开头:

  

m:多行匹配,^和$表示行的开头和结尾

至于为什么你的问题正在发生,似乎Neko的正则表达式库错误地将你的正则表达式简化为空,这将在每个字符之间匹配。你可以放一个。在正则表达式的末尾,将空格移动到替换字符串的前面,这可能会阻止该错误发生,并且它应该与所有实现兼容。

相关问题