2011-08-26 65 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_”仍然被视为有效。