Java Regex错误/问题(什么样的字符是[)?

时间:2014-09-28 17:19:55

标签: java arrays regex

我正在尝试将数组写入文本文件,并且在此过程中我注意到数组是以以下格式编写的:[1, 1, 2, 2](int数组的示例)并且我想要转换为数组,以上面的int数组为例,将其转换为字符串并从中删除[,。我怎么能去做呢,我已经尝试过寻找我能写的字符串模式但没有运气,我也尝试过写作:

char [] PIN = System.console().readPassword();
    String pin = java.util.Arrays.toString(PIN);
    String WriteToF = pin.replaceAll("[", "");

但收到以下错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed char
acter class near index 0
[
^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)

These patterns?

方面,[在Java中被归类为什么类型的角色?

3 个答案:

答案 0 :(得分:2)

String#replaceAll方法替换使用正则表达式。如果要替换文字[字符,则应使用String#replace方法:

String WriteToF = pin.replace("[", "");

在正则表达式中,[字符标记了字符类的开头。您需要使用]关闭字符类才能使其成为有效的正则表达式语法。如果您想用正则表达式替换文字 [字符,则可以将其转义:"\\[“。

答案 1 :(得分:0)

在正则表达式中,[被视为特殊的元字符(字符类的开头)。要匹配文字[,您需要在将[符号传递给replaceAll函数时将其转义。

String WriteToF = pin.replaceAll("\\[", "");

当正则表达式引擎看到[字符时,它会将其视为字符类的开头。如果打开了一个字符类,则必须使用]关闭它( ]表示字符类的结尾。)。

这样只有你得到以下错误。

Unclosed character class near index 0

答案 2 :(得分:0)

  1. 使用replaceAll("\\[", "")代替。
  2. [代表Character类的初学者,在字面上匹配[时需要进行转义。