我是正则表达式的新手,我想在逗号之间提取值,但我不知道如何。
我有这样的价值观:
[1000, Value_to_extract, 1150370.5]
我用这个技术来简化它:
String val = "[1000, Value_to_extract, 1150370.5]";
String designation=val.replace("[", "").replace("]", "").trim();
它给了我这个结果:
1000, Value_to_extract, 1150370.5
我不知道如何只提取Value_to_extract
我试过了:String designation=val.replace("[", "").replace("]", "").replaceAll(".*, ,.*", "").trim();
但我没有工作。
感谢您的帮助。
答案 0 :(得分:2)
String input = "[1000, Value_to_extract, 1150370.5]";
String[] parts = input.replaceAll("\\[\\] ", "") // strip brackets and whitespace
.split(","); // split on comma into an array
String valueToExtract = parts[1]; // grab the second entry
备注:强>
你也可以在这里使用正则表达式,q.v。 @Thomas的答案,但是从正确长度的CSV字符串中提取值时,正则表达式将变得难以处理。所以一般来说,我更喜欢在这里拆分使用正则表达式。
答案 1 :(得分:0)
,[ ]?([0-9]+[.]?[0-9]+),
, // literal ,
[ ]? // 0 or 1 spaces
([0-9]+[.]?[0-9]+) // capture a number with or without a dot
, // another litteral ,
答案 2 :(得分:0)
以下是一些选项:
String val = "[1000, Value_to_extract, 1150370.5]";
//you can remove white space by
String noSpaces = val.trim();
System.out.println(noSpaces);
//you can split the string into string[] settting
//the delimiting regular expression to ", "
String[] strings = noSpaces.split(", ");
//the strings[1] will hold the desired string
System.out.println(strings[1]);
//in the private case of val, only Value_to_extract contains letters and "_" ,
//so you can also extract it using
System.out.println(val.replaceAll("[^a-zA-Z_]", ""));
如果val不能很好地代表更普遍的需求,则需要更精确地定义需求。