我得到一个如下所示的方法,当我尝试运行它时,出现异常。
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/