我有一段代码将属性分配给NSAttributedString
,具体取决于字符串中是否存在某些关键字。换句话说,语法高亮。
要查找某个字符串是否包含这些关键字,我当前正在使用正则表达式来查找"\\bKEYWORD\\b"
这些字词的位置。问题显然是表现。
我首先尝试使用NSRegularExpression
,但性能太慢,以至于滚动我的textview几乎是不可能的。然后我尝试了Oniguruma并且事情有所改善,但它仍然明显缓慢。我可以试试PCRE,但我认为我不会增加太多。
所以,我的问题是:如何加快正则表达式搜索?也许缓存已编译的表达式?
答案 0 :(得分:1)
听起来你正在单独搜索每个单词。我会创建一个搜索单词数组,然后将它们与正则表达式交替|
符号连接在一起
给出搜索词:alpha, bravo, charlie, delta, echo
得到的符合正则表达式:\b(?:alpha|bravo|charlie|delta|echo)\b
非捕获组构造(?:
... )
比捕获语法(
快一点...... )