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
时会发生这种情况。