如何检查字符串是否为正则表达式
我有一根绳子。如何检查字符串是正则表达式还是包含正则表达式,或者它是普通字符串?
您可以做的唯一可靠的检查是 是否是语法正确的正则表达式:String
boolean isRegex;
try {
Pattern.compile(input);
isRegex = true;
} catch (PatternSyntaxException e) {
isRegex = false;
}
但是,请注意,即使对于像 和 这样的字符串,这也会导致,因为从技术上讲,它们是有效的正则表达式。true
Hello World
I'm not a regex
这将返回的唯一情况是不有效的正则表达式的字符串,例如 or 或 。false
[unclosed character class
(unclosed group
+
这很丑陋,但会检测简单的正则表达式(需要注意的是,它们必须为Java设计,即具有相关的斜杠字符转义)。
public boolean isRegex(final String str) {
try {
java.util.regex.Pattern.compile(str);
return true;
} catch (java.util.regex.PatternSyntaxException e) {
return false;
}
}