使用Java String拆分时出错

时间:2010-03-31 23:06:35

标签: java regex

全部好,

我一直在使用基本拆分 - 我只是根据像“”或“,”这样的简单标记将字符串解析成数组。

当然,客户会尝试这样做:\\.br\惨遭失败。

我需要解析一系列行。例如,字符串如下所示:

"LINE 1\\.br\\LINE 2\\.br\\LINE 3\\.br\\LINE 4\\.br\\"

,但java.util.regex.PatternSyntaxException: Unexpected internal error失败了。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您可以使用Pattern.quote()转义字符串以用作regexp:

... = s.split(Pattern.quote("\\.br\\"));

答案 1 :(得分:3)

不要忘记String.split takes a Regex,并且大多数人都会输入一个字符串文字,所以你必须逃避\正则表达式将其转义为字符串,所以你最终得到了“ \\\“在您的String参数中表示单个\字符。

e.g。

String.split("\\\")

所以在你的情况下:

String.split("\\\\\\.br\\\\") // extra slash for regex, and String encoded