适用于以下类型字符串的通用正则表达式

A generic regex that will work for the following kind of string

我有一个接受字符串的函数。

ignoreWords.contains(InString.toLowerCase());

我希望这个 Instring 的格式为 "abc",即没有任何字符的任何字符串。但是我的 InString 可能会以 "abc"",abc" 的格式出现。目前,我是这样处理的

ignoreWords.contains(text.toLowerCase().replaceAll(",","")));

但是这个 Insting 的格式可能是 ".abc""abc.""(abc)"。我不想编写多个 replaceAll 函数或编写多个 if 语句来检查 InString 是否包含 ,.

InString可能是以下格式之一",abc""abc,"".abc""abc."",abc,"".abc."",abc."".abc,""(abc)"。 InString 也以 ",(abc)""(abc),""(abc)."".(abc)"",(abc),"".(abc)." 这种格式出现的可能性非常小.

使用正则表达式编写单个 replaceAll 调用的有效方法是什么,它以简短且更简单的方式提供解决方案?

为什么还要替换其他角色?

反过来检查一下:

boolean shouldIgnore(String inString, List<String> ignoreWords){
  for(String ignoreWord:ignoreWords){
    if(inString.contains(ignoreWord)){
      return true;
    }
  }
  return false;
}

通过这种方式,您可以检查 inString 是否包含任何要忽略的单词,而无需替换输入字符串中的任何内容。

replaceAll 将正则表达式作为第一个参数,因此您可以这样做:

ignoreWords.contains(text.toLowerCase().replaceAll("[.(),]", ""));

这会将所有 .(), 替换为空字符串。