Java 从剪贴板匹配反斜杠(\)时出错

Java 从剪贴板匹配反斜杠(\)时出错,java,regex,clipboard,backslash,Java,Regex,Clipboard,Backslash,我有以下代码的密码: try { String clipStrg = (String) Toolkit.getDefaultToolkit() .getSystemClipboard() .getData(DataFlavor.stringFlavor); if ("Test I want to match".matches(clipStrg)) { System.out.println(clipStrg); }

我有以下代码的密码:

try {
    String clipStrg = (String) Toolkit.getDefaultToolkit()
        .getSystemClipboard()
        .getData(DataFlavor.stringFlavor);

    if ("Test I want to match".matches(clipStrg))
    {
        System.out.println(clipStrg);
    }

    } catch (UnsupportedFlavorException | IOException ex) {
        Logger.getLogger(Toolframe.class.getName()).log(Level.SEVERE, null, ex);
    }
当剪贴板中出现反斜杠(
“\”
)时,我会出现以下错误:

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\

是什么导致了这个问题?

您需要转义或引用您的模式,因为反斜杠是正则表达式的控制字符

例如:

if ("Test I want to match".matches(Pattern.quote(clipStrg)))
如果您只是比较
字符串
s,请改用
等于

if ("Test I want to match".equals(clipStrg))

您需要转义或引用您的模式,因为反斜杠是正则表达式的控制字符

例如:

if ("Test I want to match".matches(Pattern.quote(clipStrg)))
如果您只是比较
字符串
s,请改用
等于

if ("Test I want to match".equals(clipStrg))

String的.matches()方法是正则表达式匹配。您想要使用.equals()方法,而不是.matches()。字符串不区分大小写,这就是为什么我想要使用.matches()而不是.equals()。string的.matches()方法是正则表达式匹配。您想使用.equals()方法,而不是.matches()。字符串不区分大小写,这就是为什么我想使用.matches()而不是.equals()。所以我也需要从剪贴板中转义模式?@uranibaba您需要引用/转义
字符串
,只有当您将其解释为
模式时,当您调用
String.matches
时会发生这种情况。所以我也需要从剪贴板中转义模式?@uranibaba只有当您将
字符串解释为
模式时,您才需要引用/转义
字符串,而当您调用
String.matches
时会发生这种情况。