Java 正则表达式删除句子中的黑名单单词

Java 正则表达式删除句子中的黑名单单词,java,regex,oracle,Java,Regex,Oracle,如何使用regext筛选出黑名单(淫秽)单词,例如 如果黑名单上的单词像“Bill Joseph” 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

如何使用regext筛选出黑名单(淫秽)单词,例如 如果黑名单上的单词像“Bill Joseph”

 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.

那么“我是比尔·约瑟芬”是有效的
但“我是比尔·约瑟夫”是无效的
“我是比尔·约瑟夫,”他说
“我是比尔·约瑟夫”无效
“我是比尔·约瑟夫”无效。
同样,“我是比尔·约瑟夫”也是无效的
“我是比尔·约瑟夫”无效。

确保单词周围有一个单词边界
“*\\b”+badWord+“\\b.*”
简单,这样做:

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();

它起作用了!!根据所有输入进行测试。

使用字母数字字符类的否定:

“[^A-Za-z0-9]比尔·约瑟夫[^A-Za-z0-9]”


使用“\W”代替“[^A-Za-z0-9]”在大多数情况下都有效,除非名称前/后有下划线。所以“比尔·约瑟夫”仍然被认为是有效的。

我是比尔·约瑟芬”是有效的,但“我是比尔·约瑟芬”是无效的……如果比尔·约瑟夫被认为是黑名单上的词,那么为什么他们中的任何一个都是有效的呢?看起来你更多的是在问如何使用正则表达式来确保字符串是单词哦,对不起,我在发布问题时犯了一个错误。我现在已经纠正了。我想我只是看不出黑名单上的单词(比尔·约瑟夫)与示例有什么关系。阅读:杰夫·阿特伍德诺,他希望任何一个单词都能将“比尔·约瑟夫”与两边的非字母数字匹配。