我有一个大字符串(1116902字符长度),我想用正则表达式处理(非常简单)。我收到了一个用base64编码的soap服务器的响应。所以我只是在适当的xml标签之间得到结果然后解码响应。
这适用于小型请求。但是当我得到一个很大的响应时,永远不会调用replace()
方法的回调函数。我试图在regex101网站上测试字符串,它可以找到结果。所以我想知道我的JavaScript引擎是否存在限制。我正在使用一个使用Webkit作为JavaScript引擎的Wakanda Server V10。我无法提供字符串,因为它包含一些企业信息。
这是我的正则表达式:/xsd:base64Binary">((.|\n)*?)<\/responseData>/
我教过它可能是((.|\n)*?)
组中未包含的特殊字符。但是为什么regex101找出结果(然后可能是JavaScript引擎)
也许有人可以帮助我?
由于
答案 0 :(得分:1)
如果您可以保证开始和结束分隔符之间没有标记,这听起来可能就是这种情况,您可以将RE更改为
/xsd:base64Binary">([^<]*)<\/responseData>/
不应该要求任何回溯,可能适合你。
[^<]
仅表示除<
字符以外的所有内容。因为在您的部分的打开和结束标记之间不应该有任何标记(至少我理解的是这样),它会接受所有内容,直到您点击结束标记。重要的是RE引擎可以立即判断某些东西是否匹配,因此不需要分支或回溯。