我有一句话:id,name,field,field
例如:"100,artist10XD,0,1"
。
我想用正则表达式将它们分开。问题是artistName
也可以有一个逗号(这里的逗号的实际数量是未知的),所以我不能使用split(",")
函数。
结果应为:
100
artist10XD
0
1
每一行都有4个值。
请注意,我必须按照规则使用正则表达式。
答案 0 :(得分:3)
您仍然可以使用split(",");
结果是
split[0] == 100,
split[last -1] == 0,
split[last] == 1,
其余部分可以连接成artistName
答案 1 :(得分:0)
不是通过正则表达式拆分行,而是尝试将正则表达式应用于整行。如果每行总是有4个值,并且只有艺术家名称可能包含逗号,那么你的正则表达式可能如下所示:
([^,]+),(.+),([^,]+),([^,]+)
如果该行与正则表达式匹配,则第二组中的艺术家名称将包含4个组。例如:
BufferedReader reader = new BufferedReader(new StringReader(""
+ "100,artist10XD,0,1\n"
+ "100,artist,10,XD,0,1"));
Pattern pattern = Pattern.compile("([^,]+),(.+),([^,]+),([^,]+)");
String line;
while ((line = reader.readLine()) != null)
{
Matcher matcher = pattern.matcher(line);
if (matcher.matches())
{
System.out.println("Artist name: " + matcher.group(2));
}
}
上面的代码给出了以下输出:
Artist name: artist10XD
Artist name: artist,10,XD