java - 如何确定字符串是否不是正则表达式?

标签 java regex

我正在尝试提高某些代码的性能。它看起来像这样:

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/

相关文章:

c# - 如何通过正则表达式屏蔽输入? 1112223333 或 1112223333444

javascript - 正则表达式字符串匹配?

java - 如何打印在Gradle中生成的Maven依赖项的位置?

javascript - 通过搜索查找下一个文本并突出显示不起作用

c# - 正则表达式 C#

java - 如何在viewpager android中保留1000个动态 fragment ?

正则表达式:分组仅返回最后一个匹配项

java - 将一些特殊字符列入黑名单并允许其他所有字符

java - java中的代码 TextFieldName.setText ("") 是否有任何替代方法来清除文本字段中的文本?

java - 评估列表是否为空 JSTL