我正在尝试提高某些代码的性能。它看起来像这样:
public boolean isImportant(String token) {
for (Pattern pattern : patterns) {
return pattern.matches(token).find();
}
}
我注意到,许多模式似乎是简单的字符串文字,没有正则表达式结构。所以我想简单地将它们存储在一个单独的列表 (importantList) 中并进行相等性测试,而不是执行更昂贵的模式匹配,如下所示:
public boolean isImportant(String token) {
if (importantList.contains(token)) return true;
for (Pattern pattern : patterns) {
return pattern.matches(token).find();
}
}
如何以编程方式确定特定字符串是否不包含正则表达式结构?
编辑: 我应该补充一点,答案不需要对性能敏感。 (即可以使用正则表达式)我主要关心 isImportant() 的性能,因为它被调用了数百万次,而模式的初始化只进行了一次。
最佳答案
我通常讨厌这样说的答案但是...
不要那样做。
它可能不会使代码运行得更快,事实上它甚至可能导致程序花费更多时间。
如果您真的需要优化您的代码,可能有很多更有效的地方可以去。
关于java - 如何确定字符串是否不是正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15235309/