/ / Помилка незакритого класу символів? - java, regex, split

Невимкнений клас символу помилки? - java, регулярний вираз, спліт

Ось помилка:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 3
], [
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.clazz(Pattern.java:2493)
at java.util.regex.Pattern.sequence(Pattern.java:2030)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at java.lang.String.split(String.java:2313)
at java.lang.String.split(String.java:2355)
at testJunior2013.J2.main(J2.java:31)

Це область коду, яка викликає проблеми.

String[][] split = new String[1][rows];

split[0] = (Arrays.deepToString(array2d)).split("], ["); //split at the end of an array row

Що означає ця помилка і що потрібно зробити, щоб виправити код вище?

Відповіді:

29 для відповіді № 1

String#split працює з Регулярне вираження але []) не є стандартними символами, "вираженими виразками". Отже, вони повинні бути врятувався - використання [])

Однак в а Java String, теж не є стандартним символом, і це повинно бути втекли також.

Таким чином, просто розділитись на [, Java String використаний є "\["; і ви намагаєтесь отримати:

.split("\], \[")

Однак у цьому випадку ви «не просто семантично уникаючи кількох конкретних символів у регулярному виразі, але насправді цього бажаючи весь ваш зразок трактується буквально: є метод зробити саме це