【问题标题】:Regular expression illegal character in JavaJava中的正则表达式非法字符
【发布时间】:2013-07-31 08:58:14
【问题描述】:

头疼之后上网查了一下,找不到这个正则表达式错误的原因:

"\"\w*&&[\p{Punct}]\"["+sepChar+"]\"\w*&&[\p{Punct}]\""

我正在尝试使用以下模式读取主数据文件(包括引号):

"TEXTVALUE":"TEXTVALUE":"TEXTVALUE"

并用上面的正则表达式分割每一行。

所以,例如:

"Hello:John":"Hello:World":"Hello:Mark"

将分为:

{"Hello:John", "Hello:World", "Hello:Mark"}

【问题讨论】:

    标签: java regex illegal-characters


    【解决方案1】:

    反斜杠是 Java 中的转义字符。您需要使用两个反斜杠\\ 在正则表达式中包含一个反斜杠。

    试试:

    "\"\\w*&&[\\p{Punct}]\"["+sepChar+"]\"\\w*&&[\\p{Punct}]\""
    

    【讨论】:

    • @Wolfchamane - 是的,你是。例如,您正在尝试包含一个正斜杠来转义 'w' ...。
    【解决方案2】:

    好的。

    感谢@kevin-bowersox 的帮助。

    甲骨文似乎在 Java 7 的改进方面做得很好。 使用此代码:

    File file = new File(someFile);
    BufferedReader br = new BufferedReader(file);
    String line = null;
    while((line = br.readLine()) != null){
      //todo
    }
    

    如果您的文件已使用常量模式格式化,例如:

    "TEXTVALUE":"TEXTVALUE":"TEXTVALUE"
    

    上面写着:

    "TEXTVALUE-->TEXTVALUE-->TEXTVALUE"
    

    其中 '-->' 代表制表符 ('\t')

    所以,最后,我的解决方案是:

    public ArrayList getSplittedTextFromFile(String filePath) throws FileNotFoundException, IOException{
      ArrayList<String[]> ret = null;
      if (!filePath.isEmpty()){
        File input = new File(filePath);
        BufferedReader br = new BufferedReader(input);
        String line = null;
        while((line = br.readLine()) != null){
          String[] aSplit = line.split("\\t");
          if (ret == null)
            ret = new ArrayList<>();
          ret.add(aSplit);
        }//while
      }//fi
    }//fnc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 2013-02-19
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多