java - Java 中的 PatternSyntaxException(匹配 Windows 注册表路径)

标签 java regex

我得到一个如下所示的方法,当我尝试运行它时,出现异常。

java.util.regex.PatternSyntaxException:索引 6 附近发生意外内部错误 ^HKLM\

谁能发现我的正则表达式有什么问题?我想要做的是检查一个字符串,它是一个 Windows 注册表路径,并确保我的软件支持它。

    final String SUPPRTED_REGISTRY_PATH_REGEX[] = new String[] {
        "^HKLM\\",
        "^HKEY_LOCAL_MACHINE\\",
        "^HKCR\\",
        "^HKEY_CLASSES_ROOT\\"
    };

    boolean isValidated = false;

    // Windows registry path is case-insensitive therefore
    // convert the registry path to all upper case for
    // ease of comparison
    String uppercaseRegistryPath = registryPath.toUpperCase(); 

    for(int i = 0;
        i < SUPPRTED_REGISTRY_PATH_REGEX.length && isValidated == false;
        i++) {

        if(Pattern.matches(
                SUPPRTED_REGISTRY_PATH_REGEX[i], uppercaseRegistryPath)) {
            isValidated = true;
        }
    }

最佳答案

反斜杠字符由 \\ 字符表示。要在正则表达式中表示这一点,需要转义每个字符,生成 \\\\

String SUPPRTED_REGISTRY_PATH_REGEX[] = new String[] {
   "^HKLM\\\\",
   "^HKEY_LOCAL_MACHINE\\\\",
   "^HKCR\\\\",
   "^HKEY_CLASSES_ROOT\\\\"
}

关于java - Java 中的 PatternSyntaxException(匹配 Windows 注册表路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15640618/

相关文章:

java - JNI- FindClass 函数返回 null

java - java while 循环中数字的除数

javascript - 搜索条件的正则表达式

C# 和 Regex - 无法识别的分组构造

regex - ng build 由于 regExp 而给出错误

java - Android 项目中的 Junit 与响应式编程

Java查看队列中的元素

java - 如何在 Maybe.create(emitter) 中发出 Maybe.empty ?

javascript - 正则表达式仅在 Javascript 中没有跟随或以字母开头时才匹配数字

regex - SELECT 和 WHERE 中的冗余正则表达式