匹配字符串并在java中使用正则表达式存储到数组中

时间:2012-01-28 02:01:45

标签: java regex split

我正在制作一个带文件并找到标识符的程序。到目前为止,我删除了引号中的任何单词,任何以数字开头的单词,我删除了所有非单词字符。

有没有办法找到与数组中的单词不匹配的单词并使用正则表达式将这些单词存储到另一个数组中?我可以弄明白,我试图使用split方法,但是当我尝试用空格分割时它不能正常工作......这就是我分裂它所做的。

String[] SplitString = newLine.split("[\\s]");

2 个答案:

答案 0 :(得分:0)

使用

String[] SplitString = newLine.split("\\s");

如果您不想组合多个空格/制表符等,请使用

String[] SplitString = newLine.split("\\s+");

如果你这样做。例如,如果您的字符串是:

"a  b c"

第一个会给你四个令牌:"a""""b""c",第二个会给你三个:"a""b""c"

答案 1 :(得分:0)

首先删除已知单词,然后拆分:

,只需一行即可
String[] unknownWords = newLine.replaceAll("\\b(apple|orange|banana)\\b", "").split("\\s+");

注意:

  • 您的正则表达式[\s]相当于\s,因此我将其简化为
  • 你应该分开任意数量的空格:\s+
  • \b表示“字边界” - 这意味着删除正则表达式不会匹配applejack
  • 正则表达式(A|B|C|etc)是“OR”逻辑的语法