我正在尝试改进一些代码的性能。它看起来是这样的:如何确定字符串是否不是正则表达式?
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()的性能,因为它被称为数百万次,而模式的初始化只进行一次。
不会对字符串进行正则表达式来确定它是否是正则表达式,每次都比仅将每个字符串用作正则表达式更糟? – 2013-03-05 22:27:06
@MikeM:这不是他要问的。 'hello'是一个完全有效的正则表达式。 – 2013-03-05 22:28:13
不可能(至少不容易或不值得,除非您在纯字符串文字中找到某种模式)。一个简单的字符串文字是一个有效的正则表达式模式。 – AC1 2013-03-05 22:30:38