【发布时间】:2016-12-06 10:22:20
【问题描述】:
我正在解析很长的 svg 路径。所以所有的 svg 命令都被正确匹配并提取了它们的数据。但是,当我有一个很长的字符串时,它基本上只是通过。即一个字符串 352,742 个字符。 (http://pastebin.com/c5XqpS3d)
(?i)[csqtamlzhvxkf](?:[^/csqtamlzhvxkf]|/[^/]*/)*
对于 commandParser 的正则表达式,它适用于较短的字符串,但是当给定一个长字符串时,它会跳过。即使字符串清楚地开始:
M 740.4895,514.99567 711.3773,501.32477...
显然任何以 M 开头的字符串都会匹配。但是,match.find() 只是返回 false,并说那里什么都没有。
Matcher match = commandParser.matcher(path);
while (match.find()) {
int start = match.start();
values.reset();
values.ops = path.subSequence(start + 1, match.end());
String command = path.substring(start,start+1);
if (parser.matched(command,values)) {
return true;
}
}
与平台(Android)有关吗?还是莫名其妙地受到限制?
【问题讨论】: