1

我有一段代码NSAttributedString根据字符串中是否存在某些关键字来分配属性。换句话说,语法高亮。

要查找某个字符串是否具有这些关键字,我目前正在使用正则表达式来查找这些单词的位置"\\bKEYWORD\\b"。问题显然在于性能。

我第一次尝试NSRegularExpression但性能太慢以至于滚动我的文本视图几乎是不可能的。然后我尝试了 Oniguruma,情况有所改善,但仍然明显缓慢。我可能会尝试 PCRE,但我认为我不会添加太多。

所以,我的问题是:如何加快正则表达式搜索?也许缓存编译的表达式?

4

1 回答 1

1

听起来您正在单独搜索每个单词。我会创建一个搜索词数组,然后将它们与正则表达式交替|符号连接在一起

给定搜索词,例如:alpha, bravo, charlie, delta, echo

生成的正则表达式:\b(?:alpha|bravo|charlie|delta|echo)\b

在此处输入图像描述

非捕获组构造(?:...)比捕获语法要快一些(...)

于 2013-06-13T13:58:33.383 回答