【问题标题】:Matching strings and storing into an array with regex in java在java中使用正则表达式匹配字符串并存储到数组中
【发布时间】:2012-02-20 23:25:47
【问题描述】:

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

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

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

【问题讨论】:

  • 请举个例子..

标签: java regex split


【解决方案1】:

您可以简单地在一行中完成,首先删除已知单词,然后拆分:

String[] unknownWords = newLine.replaceAll("\\b(apple|orange|banana)\\b", "").split("\\s+");

注意事项:

  • 您的正则表达式[\s] 相当于\s,所以我对其进行了简化
  • 您可能应该在 任意数量 个空格上拆分:\s+
  • \b 表示“单词边界” - 这意味着删除正则表达式 不会 匹配 applejack
  • 正则表达式(A|B|C|etc) 是“或”逻辑的语法

【讨论】:

    【解决方案2】:

    使用

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

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

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

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

    "a  b c"
    

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

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多