public static final String PATTERN = "(?<=(^|,))(([^\",]+)|\"([^\"]*)\")(?=($|,))";
public static void main(String[] args) {
String line = ",1234,ABC";
Matcher matcher = Pattern.compile(PATTERN).matcher(line);
while (matcher.find()) {
if (matcher.group(3) != null) {
System.out.println(matcher.group(3));
} else {
System.out.println(matcher.group(4));
}
}
}
我使用上面的程序来解析字符串",1234,ABC"
。解析后我应该得到 3 个令牌,如下所示:
- 空字符串即“”
- 1234
- 美国广播公司
它似乎适用于 Java 1.6,但不适用于 Java 1.5。
自 Java 1.4 以来,正则表达式就在 java 中,那么为什么我会遇到这样的问题?