2014-10-16 45 views
1

反斜線(\)時,我有一個下面的代碼:錯誤匹配從剪貼板

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 
\ 

是什麼導致了這個問題?

+2

的.matches()方法是一個正則表達式匹配。你想使用.equals()方法,而不是.matches() – 2014-10-16 14:42:29

+0

該字符串不區分大小寫,這就是爲什麼我想使用.matches()而不是.equals()。 – uranibaba 2014-10-16 14:59:09

回答

4

您需要轉義或引用您的模式,因爲反斜槓是正則表達式的控制字符。

例如:

if ("Test I want to match".matches(Pattern.quote(clipStrg))) 

如果你只是比較String S,使用equals代替:字符串的

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

所以我需要從剪貼板中逃脫模式? – uranibaba 2014-10-16 14:52:22

+0

@uranibaba只有當你將它解釋爲一個'Pattern'時,你才需要引用/轉義'String',當你調用String.matches時會發生這種情況。 – Mena 2014-10-16 14:54:49