2011-08-26 69 views
3

如何使用一個REGEXT過濾掉的黑名單(淫褻)單詞的列表中刪除列入黑名單的話,這樣 如果列入黑名單的話就像是「比爾·約瑟夫正則表達式從一個句子

Then 'I am Bill Josephine' is valid 
    but 'I am Bill Joseph.' is invalid 
     'I am Bill Joseph,' is invalid 
     'I am Bill Joseph ' invalid 
     'I am Bill Joseph<any non alphanumeric>' is invalid. 

    Similarly 'I am .Bill Joseph' is invalid 
       'I am <any non alphanumeric>Bill Joseph' is invalid. 
+0

「我是比爾·約瑟芬」是有效的,但「我是比爾·約瑟芬」無效.... O_O –

+0

如果比爾·約瑟夫被認爲是列入黑名單的話,那麼爲什麼是它們中的任何有效嗎?好像你更問如何使用正則表達式,以確保一個字符串就是一個字 – user12345613

+0

噢,對不起,我犯了一個錯誤,而張貼的問題。我現在糾正了它。 – Rnet

回答

1

簡單的包圍,而這個作品:

String badStrRegex = "\\WBill Joseph\\W?"; 
Pattern pattern = Pattern.compile(badStrRegex); 
Matcher m = pattern.matcher(testStr); //testStr is your string under test 
boolean isBad = m.find(); 

它的作品!針對您的所有輸入進行測試。

0

確保字由一個單詞邊界".*\\b" + badWord + "\\b.*"

+0

沒有任何他想要的,以配合「條例草案約瑟夫」非字母數字兩邊。 –

1

使用字母數字字符類的否定:

「[^ A-ZA-Z0-9]比爾·約瑟夫[^ A-ZA-Z0-9]」

使用 「\ W」代替「[^ A-ZA-Z0-9]」將在大多數情況下,除了當有下劃線前/後名。所以「Bill Joseph_」仍然被視爲有效。