正则表达式一个或多个与 n+1 匹配



我发现我的go项目中的正则表达式替换速度非常慢,\s+被使用正则表达式的单个空格替换。ReplaceAllLiteralString (re2(。

它显然是为了折叠 SVG 中的空格而放在那里的,无论这是否是一个好主意,当更改为"{2,}"时,操作是十分之一的时间。

虽然使用 \s 与 ' ' 是一个公平的差异 - 但这是有道理的,它是比较的 5 倍。但是为什么当使用单个空格和 + 时,它比 {2,} 慢 9 倍?

X+的意思是"X的每个实例出现一次或多次",这意味着它相当于{1,}。使用s+时,您要替换(单个空白(以及s+

对于 SVG 文档或任何与此相关的 XML 文档,使用 s{2,} 肯定会很慢。以下文档需要 5 次替换,忽略换行符序列:

<?xml version="1.0" encoding="utf-8"?>
<element attr1="value" attr2="value" attr3="value"/>

现在想象一个 SVG 文档要复杂得多,像 s+ 这样的东西会比 s{1,} 快得多是合理的(又名 s{2,} (!如果您使用 CC_10,上面的文档中将有 0 个替换!

相关内容

  • 没有找到相关文章

最新更新