2
4

4 回答 4

3

[在否定字符类中转义。尽管在字符类中这不应该是必需的,但显然 Java 存在问题,并且它不会改变字符类的含义来转义在字符类中不应该具有特殊含义的字符。

尝试以下操作:

(\[.+?\][^\[]+)

或者对于 Java 代码:

Pattern pattern = Pattern.compile(“(\\[.+?\\][^\\[]+)”);
于 2012-08-03T15:49:49.067 回答
1

您需要像之前转义它们一样转义方括号:

(\\[.+?\\][^\\[]+)

由于 RegEx 解析器将 [^[] 视为具有未闭合的括号,因此导致运行时异常。

于 2012-08-03T15:49:40.813 回答
0

您需要排除括号,这应该有效:

[^\\[]
于 2012-08-03T15:50:00.137 回答
0

Java 实现似乎有一个错误。

通常,正则表达式不需要您转义它,但无论如何都要尝试转义它。

(\[.+?\][^\[]+)
"(\\[.+?\\][^\\[]+)"

转义特殊字符可能被认为是一种很好的做法,即使它们不需要。它还有助于避免这样的错误。

于 2012-08-03T15:50:16.367 回答