2014-02-28 34 views
0

我需要改進的正則表達式是如何在Java中使用自己的技能的正則表達式,不是運營商在設定值

我想,如果一個模式被稱爲輸入字符串發現基本搜索。 現在,這個輸入應該返回false任何東西從WO分開。*

WO.SYNC : true 
WO.UPD : true 
WO.REL : true 

ACCOUNTS.SYNC : false 
SC.SYNC : false 

下面是代碼的樣片,我想用, 什麼是在這裏做什麼?

Pattern p = Pattern.compile("^(WO.*)"); 
String input = "WO.SYNC"; 
Matcher m = p.matcher(input); 
System.out.println(m.find()); 
+5

這看起來沒問題(雖然你不需要該組,並且你不需要'。*';'「^ WO」'就足以作爲一個模式來測試一個字符串是否以'WO'開頭) ,那麼你的問題在哪裏? –

+0

什麼是你的問題? – mok

+0

對於'SC.SYNC'是'false',這個模式是正確的。問題是什麼? –

回答

0

Pattern p = Pattern.compile(「^(?! ACCOUNTS)。* $」);

有了這個,我能夠實現解決方案。

0

首先,我不確定爲什麼「SC.SYNC」返回true。看來,返回值是錯誤的。其次,如果你想檢查一個字符串是否可用於模式,應該調用matches()方法。

+2

但請注意,'.matches()'方法總是強制*整個字符串*匹配正則表達式。 –

+0

是的,這取決於用例來調用哪一個 – jason

+0

謝謝Tim Pietzcker。我正在使用find()。通過用matches()替換find()來解決錯誤。非常感謝。 – HookUp