所以我正在对 haxeflixel 进行一些清理工作,我需要验证一个 csv 映射,所以我使用正则表达式来检查它是否正常(不要提及结尾逗号,我知道那不是有效的 csv 但我想要允许它),我认为我有一个不错的正则表达式可以做到这一点,它似乎在闪存上运行良好,但是 c++ 崩溃,neko 给了我这个错误:运行 pcre_exec 时发生错误......这是我的正则表达式,对不起,它很长,但我不知道问题出在哪里......
^(([ ]*-?[0-9]+[ ]*,?)+\r?\n?)+$
如果有人知道可能发生了什么,我会很感激,谢谢,尼科
附言。我的正则表达式中可能存在用于检查 csv 的错误,但我可以弄清楚这些,这很有趣,我宁愿只知道具体可能导致这种情况的原因:)
编辑:啊,我刚刚注意到这不会发生在所有字符串上,一旦我将其缩小到哪些字符串,我会发布一个......至于我正在检查的内容,它基本上只是为了确保有没有奇怪的 xml 标头,或地图文件中的任何非整数值,基本上它应该验证这一点:
1,1,1,1
1,1,1,1
1,1,1,1
或这个:
1,1,1,1,
1,1,1,1,
1,1,1,1,
但不是:
xml 等等等等>
1,米,1,1
1,1,b,1
1,1,1,1
xml>
(是的,我知道那不是有效的 xml;))
编辑:它变得陌生:所以我试图确定是什么字符串使它崩溃,虽然这仍然不能解释法线贴图崩溃,但它肯定很奇怪,并且具有相同的结果:
发生的事情是:这将失败 .match() 测试,但不会崩溃:
a
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
虽然这会使程序崩溃:
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,*a*,1,1,1,1,1,1,1,1,1,1,1,1,1