如何检查字符串是否为正则表达式

2022-09-02 13:09:54

我有一根绳子。如何检查字符串是正则表达式还是包含正则表达式,或者它是普通字符串?


答案 1

您可以做的唯一可靠的检查是 是否是语法正确的正则表达式:String

boolean isRegex;
try {
  Pattern.compile(input);
  isRegex = true;
} catch (PatternSyntaxException e) {
  isRegex = false;
}

但是,请注意,即使对于像 和 这样的字符串,这也会导致,因为从技术上讲,它们是有效的正则表达式。trueHello WorldI'm not a regex

这将返回的唯一情况是不有效的正则表达式的字符串,例如 or 或 。false[unclosed character class(unclosed group+


答案 2

这很丑陋,但会检测简单的正则表达式(需要注意的是,它们必须为Java设计,即具有相关的斜杠字符转义)。

public boolean isRegex(final String str) {
    try {
        java.util.regex.Pattern.compile(str);
        return true;
    } catch (java.util.regex.PatternSyntaxException e) {
        return false;
    }
}